Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/05/2014, 01:45
ffresno
 
Fecha de Ingreso: noviembre-2002
Mensajes: 50
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Consulta MySql - Ultimos 3 registros que cumplan una condición

Código MySQL:
Ver original
  1. SELECT al.nombre, al.apellidos, al.id, a.dia_de_clase, COUNT(a.asiste) asistencias
  2.  FROM Asistencia a INNER JOIN
  3.    (SELECT distinct dia_de_clase FROM Asistencia ORDER BY dia_de_clase DESC LIMIT 3)t1
  4.         ON a.dia_de_clase = t1.dia_de_clase
  5.  INNER JOIN alumnos al ON a.alumno_id = al.id WHERE a.asiste = 1 GROUP BY al.id HAVING asistencias < 3

De momento no me funciona pero es mejor que lo que tenía yo. Te resumo lo que entiendo por si se me escapa algo
Código MySQL:
Ver original
  1. (SELECT distinct dia_de_clase FROM Asistencia ORDER BY dia_de_clase DESC LIMIT 3)t1 //elegimos los 3 ultimos registros en la tabla de asistencias

//Para cada registro de los 3 ultimos que hemos seleccionado los relacionamos con la tabla de asistencias
Código MySQL:
Ver original
  1. SELECT al.nombre, al.apellidos, al.id, a.dia_de_clase, COUNT(a.asiste) asistencias
  2.  FROM Asistencia a INNER JOIN
  3.    (SELECT distinct dia_de_clase FROM Asistencia ORDER BY dia_de_clase DESC LIMIT 3)t1
  4.         ON a.dia_de_clase = t1.dia_de_clase

Ahora esa union tendríamos que comprobar que son todos asiste = 0, o sea, que no ha asistido a clase los ultimos 3 registros, por lo que creo que esa parte no estaría bien

//Hacemos el join con alumnos agrupando por el id de alumno
Código MySQL:
Ver original
  1. INNER JOIN alumnos al ON a.alumno_id = al.id WHERE a.asiste = 1 GROUP BY al.id HAVING asistencias < 3

No enteindo pq se comprueba con asiste = 1 ¿No debería comprobar que todos los asiste suma 0? O sea, que asistencias es = 0?

Gracias por vuestra ayuda y tiempo

Última edición por gnzsoloyo; 07/05/2014 a las 04:17