Olá, Alexandre.
Quando você diz: "todos os cursos que o aluno está matriculado e quais ele já concluiu ou fez mas não tirou nota mínima necessária para concluir" você está dizendo qual o seu objetivo e não o que você quer no relatório.
O que você precisa dizer é quais as informações (as colunas em si) que você quer no seu relatório.
Pelo o que eu entendi, seria interessante as seguintes informações para você:
- Informações básicas do usuário (nome, email etc);
- Cursos que está inserido;
- Nota final de cada curso;
- Data de encerramento de cada curso;
- Se as condições de conclusão de cada curso foram concluídas ou não.
Através do uso destas informações você deve conseguir chegar onde quer usando a tabela gerada na consulta SQL no Excel com filtros.
O único problema é que se você realmente precisar da informação de conclusão de curso ela não pode ser colocada junto com as demais, é necessário uma fila SQL exclusiva, pois ela tem duas colunas com informações necessárias (userid e course).
Assim, tente as seguintes consultas, sendo a segunda para a conclusão de curso:
(Lembrando que vai puxar a informação para todos os usuários do Moodle, então vai dar milhares de linha. Aí é bom filtrar usando o WHERE para escolher algum curso ou categoria ou até mesmo um único usuário se for o caso)
SELECT
CONCAT(u.firstname,' ',u.lastname) AS Usuário,
u.email AS Email,
u.username AS Identificação,
CASE
WHEN u.suspended=1
THEN "Sim"
ELSE "Não"
END AS Bloqueado,
c.fullname AS Curso,
cc.name AS Categoria,
gg.finalgrade AS Média,
from_unixtime (c.enddate) AS 'Data de encerramento'
FROM prefix_grade_items AS gi
JOIN prefix_grade_grades AS gg ON gg.itemid = gi.id
JOIN prefix_user AS u ON u.id = gg.userid
JOIN prefix_course AS c ON c.id = gi.courseid
JOIN prefix_course_categories AS cc ON cc.id = c.category
WHERE gi.itemtype='course'
--------
SELECT
CONCAT(u.firstname,' ',u.lastname) AS Usuário,
u.email AS Email,
u.username AS Identificação,
CASE
WHEN u.suspended=1
THEN "Sim"
ELSE "Não"
END AS Bloqueado,
c.fullname AS Curso,
cc.name AS Categoria,
from_unixtime (ccom.timecompleted) AS 'Data da completação do curso'
FROM prefix_course_completions AS ccom
JOIN prefix_course AS c ON c.id = ccom.course
JOIN prefix_course_categories AS cc ON cc.id = c.category
JOIN prefix_user AS u ON u.id = ccom.userid
Recomendo que você procure sobre a linguagem SQL na internet para aprender, não é difícil eu aprendi em um dia.
Aí é só acessar seu banco de dados e por lá você pega como ele funciona e o nome das colunas e das tabelas.