Listar todos usuários e cursos cadastrados

Listar todos usuários e cursos cadastrados

por Luiz André -
Número de respostas: 3

Boa tarde. Li todo o conteudo das 4 paginas dos comandos SQL. Ate consegui fazer em partes o que eu queria.

 

Eu gostaria de listar todos os usuários cadastrados na plataforma moodle juntamente com o curso que ele está inscrito. 

Eu achei esse comando e ele me atendeu em partes. Nesse codigo adicionei o campo Cidade e municipio com campos personalizados. 

 

Mas não consigo gerar a lista com o curso cadastrado

 

SELECT DISTINCT u.id, u.firstname,u.lastname,u.email, d.data AS Cidade, d1.data AS Estado FROM mdl_user u LEFT JOIN mdl_user_info_data d ON d.userid=u.id LEFT JOIN mdl_user_info_data d1 ON d1.userid=u.id WHERE u.confirmed=1 AND d.fieldid=4

 

Vocês conseguem me auxiliar? Sou +- leigo em SQL e estou tentando a dias resolver esse problema =(

Em resposta à Luiz André

Re: Listar todos usuários e cursos cadastrados

por Lino Vaz Moniz -

Luiz,

Para mapear os cursos que alunos estão inscritos, execute os comandos SQL a seguir. São comando usado no plugin MReport

Gerar lista de usuários com perfil de aluno nos curso do Moodle com comando SQL
https://comunidade.badiu.com.br/mod/forum/discuss.php?d=487

Verificar se um usuário está inscrito no curso do Moodle com comando SQL
https://comunidade.badiu.com.br/mod/forum/discuss.php?d=464

Relatório que mapeia total de inscritos no curso do Moodle e total que acessaram com comando SQL
https://comunidade.badiu.com.br/mod/forum/discuss.php?d=594

Consultar alunos que nunca acessaram o curso no Moodle com SQL
https://comunidade.badiu.com.br/mod/forum/discuss.php?d=584

Em resposta à Lino Vaz Moniz

Re: Listar todos usuários e cursos cadastrados

por Luiz André -

Boa tarde Lino!

 

Muito obrigado pela ajuda. (Vou guardar esses selects para outras consultas) Mas me restou mais uma dúvida. 

 

id firstname "lastname email cidade estado curso1 curso2 curso3
2 Luiz Andre luiz_nac@hotmai.com Belo Horizonte Minas Gerais      

Usei esse select aqui para gerar essa informação acima. Os campos em negrito e o que eu queria adicionar.

 

SELECT DISTINCT u.id, u.firstname,u.lastname,u.email, d.data AS Cidade, d1.data AS Estado FROM mdl_user u LEFT JOIN mdl_user_info_data d ON d.userid=u.id LEFT JOIN mdl_user_info_data d1 ON d1.userid=u.id WHERE u.confirmed=1 AND d.fieldid=4

 

Existe a possibilidade de eu extrair o curso que o usuário está inscrito igual nessa tabela acima? Porque com os selects que me mandou eu consigo listar quantos usuários inscritos em cada curso, mas queria ter um controle maior. Exemplo, o usuário luiz esta inscrito no curso x e curso y e curso z, e possivel fazer dessa forma?

 

Desculpa tantas perguntas, e que realmente não tenho mais a quem recorrer. Caso não dê pra fazer desse jeito agradeço da mesma forma 

 

Obrigado

Em resposta à Lino Vaz Moniz

Re: Listar todos usuários e cursos cadastrados

por Lino Vaz Moniz -

Luiz,

Para você montar uma relatório que teria uma saída uma tabela cujas culnas seriam:

id firstname lastname email cidade estado curso1 curso2 curso3

A alternativa que vejo é montar duas consultas SQL  e efetuar junção de dados com PHP.  A lista de curso como coluna é o ponto da questão. Uma alternativa será usar subconsulta. Só que  para cada curso, seria necessário uma subconsulta. Mesmo assim vejo complicação. A alernativa simplificada seria trazer todos os cursos em um coluna separado por vírgula. Neste caso a subconsulta deve implementar o comando GROUP_CONCAT.  

Bem, vamos a saída que vejo mais eficiente que é montar duas consultas e formatar na hora de imprimir. 

1) Consultar que gera a lista de usuários

SELECT id, firstname, lastname, email, city FROM mdl_user

Essa consulta retora a lista de usuários. 

2) Consulta que gera lista de cursos de cada usuário

SELECT rs.id,rs.userid,c.id AS courseid,c.fullname AS coursefullname FROM mdl_role_assignments rs INNER JOIN mdl_context e ON rs.contextid=e.id INNER JOIN mdl_course c ON c.id=e.instanceid WHERE e.contextlevel=50

3) Formatação

Com PHP ou qualquer outra linguagem que estiver usado, gere colunas dinâmicas de curso1, curso2, etc juntando informações que retornado nas duas colunas. A chave de sincronização é id do usuário que vem na primeira consulta com userid que vem na segunda consulta. 

Após montar isso, compartilhe a lógica aqui.