Para gerar lista de perfil de um determinado usuário independente do curso, execute o seguinte comando SQL:
SELECT DISTINCT r.shortname FROM mdl_role r INNER JOIN mdl_role_assignments rs ON r.id=rs.roleid WHERE rs.userid=?
Passe parâmetro do usuário em rs.userid=?
Para contar perfil diferente de um determinado usuário independente do curso, execute o seguinte comando SQL:
SELECT COUNT( DISTINCT roleid) AS countrecord FROM mdl_role_assignments WHERE userid=?
Passe parâmetro do usuário em rs.userid=?
Para verificar se um determinado usuário tem um determinado perfil em um curso, execute o seguinte comando SQL:
SELECT COUNT(rs.id) AS coutrecord FROM mdl_role r INNER JOIN mdl_role_assignments rs ON r.id=rs.roleid INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND e.instanceid =? AND r.shortname =? AND rs.userid=?
Passe parâmetro do usuário em rs.userid=?
Passe parâmetro do curso em e.instanceid =?
Passe parâmetro nome breve do perfil emr.shortname =?
Listar cursos que o um usuários está inscrito pela quantidade de perfil com seguinte comando SQL:
SELECT e.instanceid AS courseid,COUNT(rs.roleid) AS countrole FROM mdl_role_assignments rs INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND rs.userid=? GROUP BY e.instanceid HAVING COUNT(rs.roleid) > ?
Passe parâmetro do usuário em rs.userid=?
Passe parâmetro de quantidade de perfil o em HAVING COUNT(rs.roleid) > ?
Contar quantidade de inscrição por perfil de um usuário
SELECT COUNT(id) AS coutrecord, roleid FROM mdl_role_assignments WHERE rs.userid=? GROUP BY roleid
Passe parâmetro do usuário em rs.userid=?
Contar quantidade de inscrição ativa/inativa por perfil de um determinado usuário
SELECT COUNT(rs.id) AS coutrecord,ue.status FROM mdl_role_assignments 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=?
Passe parâmetro do usuário em rs.userid=?