Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/09/2008, 01:01
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años
Puntos: 300
Respuesta: Consulta compljea

Podrías hacerlo con programación. Pero si quieres hacerlo desde la base de datos, podrías hacer algo parecido a esto. No sé cómo tienes metido el mes, si como varchar o cómo (he pensado que tienes metido enero, febrero, marzo, etc.), pero esta consulta podría hacer lo que quieres.

Código sql:
Ver original
  1. SELECT a.nombre,
  2. IF( SUM( IF( m.meses = 'enero', 1, 0 ) ) >0, 'X', '' ) AS enero,
  3. IF( SUM( IF( m.meses = 'febrero', 1, 0 ) ) >0, 'X', '' ) AS febrero,
  4. IF( SUM( IF( m.meses = 'marzo', 1, 0 ) ) >0, 'X', '' ) AS marzo,
  5. IF( SUM( IF( m.meses = 'abril', 1, 0 ) ) >0, 'X', '' ) AS abril,
  6. IF( SUM( IF( m.meses = 'mayo', 1, 0 ) ) >0, 'X', '' ) AS mayo,
  7. IF( SUM( IF( m.meses = 'junio', 1, 0 ) ) >0, 'X', '' ) AS junio,
  8. IF( SUM( IF( m.meses = 'julio', 1, 0 ) ) >0, 'X', '' ) AS julio,
  9. IF( SUM( IF( m.meses = 'agosto', 1, 0 ) ) >0, 'X', '' ) AS agosto,
  10. IF( SUM( IF( m.meses = 'septiembre', 1, 0 ) ) >0, 'X', '' ) AS septiembre,
  11. IF( SUM( IF( m.meses = 'octubre', 1, 0 ) ) >0, 'X', '' ) AS octubre,
  12. IF( SUM( IF( m.meses = 'noviembre', 1, 0 ) ) >0, 'X', '' ) AS noviembre,
  13. IF( SUM( IF( m.meses = 'diciembre', 1, 0 ) ) >0, 'X', '' ) AS diciembre
  14. FROM `alumno` a
  15. INNER JOIN meses m ON a.id = m.idalumno
  16. GROUP BY a.id

Agrupo por nombre y luego hago suma por meses, el primer if de cada mes convierte cualquier número que no sea cero en una X.