Listar todos usuários e cursos cadastrados

Re: Listar todos usuários e cursos cadastrados

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

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.