Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/09/2008, 01:15
wolfxmen
 
Fecha de Ingreso: abril-2008
Mensajes: 51
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta compljea

Cita:
Iniciado por jurena Ver Mensaje
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.
Gracias por tu comenario Jurena, de hecho si tengo metido los meses de Enero a Octubre, pero lo que me va a denotar si un mes esta pagado o no es otro campo que olvide mencionar anteriormente y este campo lo llamo estado, bueno te voy a colocar los campos de mi tabla pagos siendo estos:

fecha, idalumno, boleta, IDMES, idrubros, ESTADO, mora, idciclo.

a través del idalumno obtengo los datos de apellido y nombre del alumno, ahora bien para saber si un mes esta pagado cito al idmes por ejemplo 1 es enero y luego verifico si el campo ESTADO tien el valor 1 de ser así esto significa que el mes enero esta cancelado, si el campo estado tuviera un valor 0 entonces indica que el mes no ha sido cancelado.

espero que con esto se aclare mas el panorama, perdón por no haber descrito esto antes. Ya con estos datos me gustaria saber como podria cambiar la consulta que me describiste pero ya tomando en cuenta el campo estado, quiza sea muy sencillo, pero la verdad es que soy novato con mysql.

Por tu ayuda te estoy muy agradecido.