Query para exibir os participantes de certo curso

Query para exibir os participantes de certo curso

por Paula Marin Leite -
Número de respostas: 10
No Moodle, há o link para exibição de todos os participantes inscritos em certo curso. Preciso da query que faça essa seleção dos participantes de um curso X, porém não consegui identificá-la.
Desculpem-me pela pergunta, por ser muito básica, mas não consegui montar essa query sozinha mesmo.
Obrigada.
Contagem das avaliações:  -
Em resposta à Paula Marin Leite

Re: Query para exibir os participantes de certo curso

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
Olá, Paula

na versão 1.9 do Moodle, a associação de usuários com cursos se dá através da tabela role_assignment.
Dado um id de curso C_ID, a consulta que traz todos os participantes desse curso seria:


SELECT u.*
 FROM user u
 JOIN role_assignments ra
 ON ra.userid = u.id
 JOIN context c
 ON c.id = ra.contextid
 WHERE c.contextlevel = 50
 AND c.instanceid = C_ID
 AND u.deleted = 0


Note que esta consulta retorna todos os campos da tabela user, e você provavelmente não precisará deles todos.
O "contextlevel" é definido no arquivo lib/accesslib.php por volta da linha 140:

// context definitions
define('CONTEXT_SYSTEM', 10);
define('CONTEXT_USER', 30);
define('CONTEXT_COURSECAT', 40);
define('CONTEXT_COURSE', 50);
define('CONTEXT_MODULE', 70);
define('CONTEXT_BLOCK', 80);

Atenciosamente,
Daniel
Contagem das avaliações:  -
Em resposta à Daniel Neis Araujo

Re: Query para exibir os participantes de certo curso

por Thiago Mendes -
muito bom daniel .....

mas se no meu caso eu tenho a categoria 'curso extensão' e dentro dela eu tenho tres cursos 'curso A', 'curso B' e 'curso C' usando esta mesma query eu consigo uma lista com os alunos da categoria extensão...

resumindo em vez de pesquisar pelo id do curso tem como pesuisar pelo id da categoria que os cursos pertencem???



Contagem das avaliações:  -
Em resposta à Thiago Mendes

Re: Query para exibir os participantes de certo curso

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
Olá, Thiago

basta alterar o contextlevel para o de categorias e utilizar o id da categoria ao invés do id do curso.

Abraço,
Daniel
Contagem das avaliações:  -
Em resposta à Daniel Neis Araujo

Re: Query para exibir os participantes de certo curso

por Thiago Mendes -
justamente, fiz isso mas quando executo retorna um conjunto vazio
Contagem das avaliações:  -
Em resposta à Thiago Mendes

Re: Query para exibir os participantes de certo curso

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
Olá, Thiago

ao trocar o context level pelo da categoria, a consulta retornará as pessoas que estão inscritas na categoria, o que no seu caso realmente deve ser um conjunto vazio.

O que você pode fazer é manter o contextlevel como o do curso, fazer mais um join com a tabela course e filtrar course.categoryid = id_da_categoria_em_questão. Talvez isso funcione do jeito que você quer.

Outra possibilidade é procurar alguma função em lib/accesslib.php que faça a busca em todos os contextos "do curso pra cima", pois na consulta acima, caso um curso esteja numa subcategoria da que você especificou, ele não será mostrado.

Abraço,
Daniel
Contagem das avaliações:  -
Em resposta à Daniel Neis Araujo

Re: Query para exibir os participantes de certo curso

por André Gonzaga -

Olá Daniel,

Muito boa a sua explicação. Parabéns.

Estou com a seguinte dúvida. Quero selecionar as turmas de alguns cursos. Qual tabela que armazena as informações das turmas dos cursos?

Procurei no forum Geral do Moodle e aqui no banco de dados, mas não consegui achar uma relação.

Obrigado!

Contagem das avaliações:  -
Em resposta à André Gonzaga

Re: Query para exibir os participantes de certo curso

por Heitor Temp -

A tabela que armazena as informações das turmas é a mdl_groups, a que armazena os alunos das turmas é a mdl_groups_members.

[]s.

Contagem das avaliações:  -
Em resposta à Heitor Temp

Re: Query para exibir os participantes de certo curso

por André Gonzaga -

Brigado Heitor. É essa mesma. sorriso

abraços!

Contagem das avaliações:  -