Bonjour François,
j'ai réussi à produire cette requête, mais vu mon niveau très rouillé en SQL, je n'arrive plus à produire directement le chiffre total à coté de chaque catégorie de question... Va falloir qu'un plus costaud que moi passe dans les parages !
En attendant, la requête ci-dessous, a minima, indique le nom de l'étudiant, son ID (pour éviter les doublons), le titre de la question à laquelle il a répondu juste et la catégorie de question d'appartenance. Après cela, un petit coup de traitement par Excel ou autre tableur devrait déjà un peu aider.
SELECT
concat( u.firstname, " ", u.lastname ) AS "Etudiant",
quiza.userid,
que.questiontext AS 'Question',
quizc.name AS 'Catégorie'
FROM mdl_quiz_attempts quiza
JOIN mdl_quiz q ON q.id=quiza.quiz
JOIN mdl_question_usages qu ON qu.id = quiza.uniqueid
JOIN mdl_question_attempts qa ON qa.questionusageid = qu.id
JOIN mdl_question que ON que.id = qa.questionid
JOIN mdl_user u ON u.id = quiza.userid
JOIN mdl_question_categories quizc ON que.category = quizc.id
WHERE q.name = "NOM_DU_QUIZZ"
AND q.course = "ID_DU_COURS"
AND qa.rightanswer=qa.responsesummary
ORDER BY u.lastname, u.firstname, quizc.name ASC
Dans le WHERE, il suffit donc d'entrer l'ID du cours et le nom du quiz (afin de pouvoir se repérer s'il y a plusieurs quiz dans le cours).
Dans les champs récupérés, il y a le titre de la question, qui m'a servi pour mes tests. Il suffit de supprimer la ligne que.questiontext AS 'Question', pour ne plus la voir.
Comme dit, je sais qu'il y a sûrement moyen d'arriver à faire le total immédiatement, mais là, j'avoue bloquer un peu... En PHP, ça serait vite fait, mais direct en SQL, je sais pas trop faire !
Olivier