Ver Mensaje Individual
  #10 (permalink)  
Antiguo 10/10/2008, 13:51
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta compljea

He añadido la tabla ciclos y relacionado los datos. Ahora la consulta sería:
Código sql:
Ver original
  1. SELECT a.pnombre, a.snombre, a.papellido, a.sapellido, s.seccion, g.grado, c.ciclo, IF( SUM( IF(p.idmes = 1 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS enero, IF( SUM( IF( p.idmes = 2 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS febrero,
  2. IF( SUM( IF( p.idmes = 3 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS marzo,
  3. IF( SUM( IF( p.idmes = 4 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS abril,
  4. IF( SUM( IF( p.idmes = 5 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS mayo,
  5. IF( SUM( IF( p.idmes = 6 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS junio,
  6. IF( SUM( IF( p.idmes = 7 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS julio,
  7. IF( SUM( IF( p.idmes = 8 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS agosto,
  8. IF( SUM( IF( p.idmes = 9 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS septiembre,
  9. IF( SUM( IF( p.idmes = 10 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS octubre,
  10. IF( SUM( IF( p.idmes = 11 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS noviembre,
  11. IF( SUM( IF( p.idmes = 12 AND p.estado = 1, 1, 0 ) ) >0, 'X', '' ) AS diciembre
  12.  
  13. FROM alumnos a
  14. INNER JOIN pagos p ON a.idalumno = p.idalumno INNER JOIN secciones s ON a.idseccion = s.idseccion INNER JOIN grados g ON a.idgrado = g.idgrado INNER JOIN ciclos c ON c.id = p.idciclo
  15. WHERE g.idgrado = 1 AND s.idseccion = 1 AND c.ciclo = 2007
  16. GROUP BY a.idalumno

A mí me funciona perfectamente, pero comprueba que hay alguien con esos datos, con idgrado1, idsección1 y que tenga datos del año 2007. En la tabla ciclos he puesto un campo id y un campo ciclo.