Como rastrear alunos afetados por uma questão com gabarito errado em quiz

Como rastrear alunos afetados por uma questão com gabarito errado em quiz

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

Situação comum: você descobre que uma questão do banco tem gabarito errado, mas ela foi alocada via random/question set em vários quizzes. Como achar quem foi afetado?

A chave está em mdl_question_attempts.questionid — essa coluna registra a questão real servida ao aluno, independentemente de ter sido escolhida por slot fixo ou via question_set_references. Ou seja, não precisa varrer a estrutura de seleção randômica: basta filtrar pelo ID da questão.

SELECT DISTINCT
    u.id,
    u.firstname,
    u.lastname,
    u.email,
    q.id AS quiz_id,
    q.name AS quiz_name,
    qa.id AS quiz_attempt_id,
    qa.state AS attempt_state,
    FROM_UNIXTIME(qa.timefinish) AS finished_at,
    qatt.responsesummary,
    qatt.rightanswer
FROM mdl_question_attempts qatt
    INNER JOIN mdl_question_usages qu 
        ON qu.id = qatt.questionusageid
    INNER JOIN mdl_quiz_attempts qa 
        ON qa.uniqueid = qu.id
    INNER JOIN mdl_quiz q 
        ON q.id = qa.quiz
    INNER JOIN mdl_user u 
        ON u.id = qa.userid
WHERE qatt.questionid = ?
    AND qa.preview = 0
    AND qa.state IN ('finished', 'inprogress', 'overdue')
    AND u.deleted = 0

Passe o parâmetro id da questão em ?
Esse código foi executado na versão 5 do Moodle. Deve funcionar na versão da família 3.x e 4.x