1 -Gerar lista de presença de todas as sessões e de todos os alunos de um curso
SELECT l.id,u.firstname,u.lastname,u.email,s.sessdate,st.description,st.grade FROM mdl_attendance_log l INNER JOIN mdl_attendance_sessions s ON l.sessionid=s.id INNER JOIN mdl_attendance_statuses st ON l.statusid=st.id INNER JOIN mdl_user u ON l.studentid =u.id INNER JOIN mdl_attendance at ON s.attendanceid=at.id WHERE at.course =?
Caso preferir formatar a data para banco MySQL execute esse comando. (É o mesmo comando que a de cima, a diferença é que traz a data formatada)
SELECT l.id,u.firstname,u.lastname,u.email, from_unixtime(s.sessdate, '%d/%m/%Y %H:%i:%s') AS sessdate,st.description,st.grade FROM mdl_attendance_log l INNER JOIN mdl_attendance_sessions s ON l.sessionid=s.id INNER JOIN mdl_attendance_statuses st ON l.statusid=st.id INNER JOIN mdl_user u ON l.studentid =u.id INNER JOIN mdl_attendance at ON s.attendanceid=at.id WHERE at.course =?
Passe o parâmetro id do curso em at.course =?
Para gerar lista de alunos ausentes, basta fazer o filtro st.grade = 0
2- Gerar lista de presença de um aluno
SELECT s.sessdate,st.description,st.grade FROM mdl_attendance_log l INNER JOIN mdl_attendance_sessions s ON l.sessionid=s.id INNER JOIN mdl_attendance_statuses st ON l.statusid=st.id INNER JOIN mdl_user u ON l.studentid =u.id INNER JOIN mdl_attendance at ON s.attendanceid=at.id WHERE at.course =? AND u.id=?
Passe o parâmetro id do curso em at.course =? e id do aluno em u.id=?
3- Data da ultima presença que o aluno recebeu no curso
SELECT MAX(s.sessdate) AS sessdate FROM mdl_attendance_log l INNER JOIN mdl_attendance_sessions s ON l.sessionid=s.id INNER JOIN mdl_attendance_statuses st ON l.statusid=st.id INNER JOIN mdl_user u ON l.studentid =u.id INNER JOIN mdl_attendance at ON s.attendanceid=at.id WHERE at.course =? AND u.id=? AND st.grade > 0
Passe o parâmetro id do curso em at.course =? e id do aluno em u.id=?