Mapear alunos inscritos em um curso com comando SQL levando em conta inscrição ativas , usuários ativos e perfil que podem ser avaliados

Mapear alunos inscritos em um curso com comando SQL levando em conta inscrição ativas , usuários ativos e perfil que podem ser avaliados

por Lino Vaz Moniz -
Número de respostas: 0

Para listar todos os alunos de um curso, filtrando apenas:

  • Inscrições não suspensas
  • Inscrições com data de início e encerramento dentro de período de validade
  • Perfis que podem ser avaliados
  • Usuário com cadastro não suspenso, não deletado e confirmado

Execute o seguinte comando SQL:

SELECT DISTINCT u.id AS userid,u.firstname,u.lastname,u.email FROM mdl_role_assignments rs INNER JOIN mdl_user u ON rs.userid=u.id  INNER JOIN mdl_context e ON rs.contextid=e.id INNER JOIN mdl_enrol en ON e.instanceid=en.courseid INNER JOIN mdl_user_enrolments ue ON en.id=ue.enrolid WHERE e.contextlevel=50 AND rs.userid=ue.userid  AND en.courseid =? AND ue.status = 0 AND en.status = 0 AND u.deleted=0 AND u.confirmed=1 AND  u.suspended =0 AND (ue.timestart IS NULL OR ue.timestart = 0 OR ue.timestart <= ? ) AND (ue.timeend IS NULL OR ue.timeend = 0 OR ue.timeend >= ? ) AND  rs.roleid IN (SELECT value FROM mdl_config WHERE name = 'gradebookroles')

Passe parâmetro id curso em en.courseid =?

Passe parâmetro data atual em formato timestamp   ue.timestart <= ? e  ue.timeend >= ?

Se estiver usando PostgreSql, remove a subconsulta. Tire esse parte do comando e executa a parte e passe parâmetro para SQL no rs.roleid. 

AND  rs.roleid IN (SELECT value FROM mdl_config WHERE name = 'gradebookroles')