Consulta SQL de los primeros accesos a un curso

Consulta SQL de los primeros accesos a un curso

de Antonio Puchades -
Número de respuestas: 3
Hola

Necesito una consulta sql que me muestre los siguientes campos: usuario, curso y primer acceso al curso.

Mi problema es que no se cómo relacionar el campo firstaccess de la tabla mdl_user con los cursos de cada alumno. ¿Puede darme alguién alguna pista?

Gracias

Toni

Promedio de valoraciones: -
En respuesta a Antonio Puchades

Re: Consulta SQL de los primeros accesos a un curso

de Raul Garcia Canet -
Hola Antonio,

El campo firstacces de la tabla mdl_user indica el primer acceso al "Sitio" no al curso.

Lo mejor es que uses la tabla mdl_log. Ahi se guardan todas las cciones del un usuario.

Por ejemplo:Esta SQL muestra el primer acceso al curso del usuario 4

SELECT userid,MIN(time),course,module FROM `mdl_log` WHERE action='view' AND module='course' AND userid='4'

Si te montas un bucle que recorra a los usuarios de un curso y vaya almacenando estos registros en un array, al final tendrás en el array, los datos que necesitas.

Así, de entrada es lo primero que se me ocurre.

Espero que te sirva,
Hasta pronto,
Salu2
J. Raul (juagarc4) guay


En respuesta a Raul Garcia Canet

Re: Consulta SQL de los primeros accesos a un curso

de Antonio Puchades -

Gracias J. Raul por tus aclaraciones de firstaccess, mdl_log y MIN.

He resuelto el problema con una sql pura y dura:

SELECT fullname AS CURSO, username AS USUARIO,
DATE_FORMAT(FROM_UNIXTIME(MIN(time)), '%d/%m/%Y %H:%i:%s') AS 'PRIMER ACCESO',
DATE_FORMAT(FROM_UNIXTIME(MAX(time)), '%d/%m/%Y %H:%i:%s') AS 'ULTIMO ACCESO'

FROM prefix_user

INNER JOIN (prefix_course INNER JOIN prefix_log ON prefix_course.id = prefix_log.course)

ON prefix_user.id = prefix_log.userid

WHERE action = 'view' AND module = 'course'

GROUP BY fullname, username

Y funciona con pocos datos. Ya veremos qué pasa cuando tenga muchos!

Saludos

Toni