Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/10/2008, 22:32
wolfxmen
 
Fecha de Ingreso: abril-2008
Mensajes: 51
Antigüedad: 16 años
Puntos: 0
Respuesta: Consulta compljea

Cita:
Iniciado por jurena Ver Mensaje
para una tabla alumno y otra llamada meses

Código sql:
Ver original
  1. SELECT a.nombre, IF( SUM( IF( m.idmes = 1 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS enero,
  2. IF( SUM( IF(m.idmes = 2 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS febrero,
  3. IF( SUM( IF(m.idmes = 3 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS marzo,
  4. IF( SUM( IF(m.idmes = 4 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS abril,
  5. IF( SUM( IF(m.idmes = 5 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS mayo,
  6. IF( SUM(IF(m.idmes = 6 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS junio,
  7. IF( SUM( IF(m.idmes = 7 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS julio,
  8. IF( SUM( IF(m.idmes = 8 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS agosto,
  9. IF( SUM( IF(m.idmes = 9 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS septiembre,
  10. IF( SUM( IF(m.idmes = 10 AND m.ESTADO = 1, 1, 0 ) ) >0, 'X', '' ) AS octubre
  11. FROM `alumno` a INNER JOIN meses m ON a.id = m.idalumno GROUP BY a.id
Por supuesto, si tienes una tabla con los nombres de los meses podrías hacer un GROUP_CONCAT y podrías ofrecer la lista de los meses pagados.

Pero si quieres cruces, puedes usar esta opción.
Jurena, he intentado correr el código postedado en el query browser de mysql pero me da errores, lo que estoy tratando de hacer es elaborar un listado de alumnos por grado, seccion y ciclo, con los meses que ha pagado cada alumno las tablas que utilizo son: Pagos, meses, alumnos, grados, secciones.

campos en tabla pagos: idalumno, idmes, idciclo, estado
campos en tabla meses: idmes, mes
campos en tabla grados: idgrado, grado
campos en tabla secciones: idseccion, seccion
campos en tabla alumnos: idalumno, papellido, sapellido, pnombre, snombre, idgrado, idseccion

de un formulario de vb6 voy a elegir el grado, la seccion, y el ciclo escolar, con estos datos ya puedo determinar el listado de alumnos de ese grado y seccion, para determinar quienes han pagado comparo el idalumno de la tabla pagos con el idalumno de la tabla alumnos al coinicidir ya puedo seleccionar nombre y apellidos.

Al tener los nombres verifico en la tabla pagos: si el estado = 1 y el idmes 1, ok el mes enero ha sido pagado pero si el estado es 0 el mes no ha sido pagado. el idmes lo enlazo a la tabla meses para verificar el nombre del mes pagado.

donde tendria que colocar el where idgrado = xx and idseccion = xx and idciclo = xx and pagos.idalumno = alumnos.idalumno para que funcione esta consulta, asumo que en el from deben ir las tablas alumnos, meses, grados, secciones, pagos, la verdad se me hace dificil ya que yo empiezo a trabajar con bases de datos y especificamente con mysql, quiza lo que se tenga que hacer sea sencillo pero por el momento se me esta complicando, por favor con los datos de las tablas citadas anteriomente podrias darme un esquema de como podria quedar el select...

Por tu ayuda muy agradecido....