Thiago,
Segue mapeamento de pesquisa que ainda estou fazendo sobre tabelas do quiz. Ainda não está completo.
Principais Tabelas do Questionário
Tabela
|
Descrição
|
mdl_question
|
Armazena as questões
|
mdl_question_answers
|
Armazena opções de resposta das questões e gabaritos
|
mdl_quiz
|
Armazena os questionários
|
mdl_quiz_grades
|
Armazena nota final do questionário de cada aluno
|
mdl_quiz_attempts
|
Armazena as tentativas de cada aluno, registra status e a nota final da tentativa
A coluna uniqueid é chave estrangeira da tabela mdl_question_usages que
|
mdl_question_states
|
Armazena as respostas dos alunos
|
mdl_quiz_slots
|
Registra as questões que compõem faz referência a tabela mdl_question
|
mdl_question_attempts
|
Registra uma cópia das questões alocadas na tentava. Assim, se houver mudança do texto da questão original não impacta no texto original da questão alocada na tentativa
|
mdl_question_attempt_steps
|
|
mdl_question_attempt_step_data
|
|
Segue alguns comandos SQL que pode lhe ajudar. São comandos usados no sistema de relatório MReport para montar prova gerado pelo quiz. Estou estruturando um post que detalhe sobre tudo isso. A descrição dos comandos SQL ainda precisa de revisão. Estou publicando informações que estão ainda em fase de pesquisa.
Enunciado da cada questão
SELECT qa.questionid,q.qtype,q.questiontext FROM mdl_quiz_attempts qt INNER JOIN mdl_question_attempts qa ON qt.uniqueid=qa.questionusageid INNER JOIN mdl_question q ON qa.questionid=q.id WHERE qt.id=?
Sequência das questões
SELECT qa.questionid,qsd.value AS sequenceresponse FROM mdl_quiz_attempts qt INNER JOIN mdl_question_attempts qa ON qt.uniqueid=qa.questionusageid INNER JOIN mdl_question_attempt_steps qs ON qa.id=qs.questionattemptid INNER JOIN mdl_question_attempt_step_data qsd ON qs.id=qsd.attemptstepid WHERE qsd.name='_order' AND qt.id=?
Alternativa de cada questão
SELECT qw.id,qa.questionid,qw.id AS answerid,qw.answer,qw.fraction FROM mdl_quiz_attempts qt INNER JOIN mdl_question_attempts qa ON qt.uniqueid=qa.questionusageid INNER JOIN mdl_question_answers qw ON qa.questionid=qw.question WHERE qt.id=?
Sequencia da alternativa de resposta de cada questão
SELECT qmc.questionid,qmc.answernumbering FROM mdl_quiz_attempts qt INNER JOIN mdl_question_attempts qa ON qt.uniqueid=qa.questionusageid INNER JOIN mdl_qtype_multichoice_options qmc ON qa.questionid=qmc.questionid WHERE qt.id=?
Passe o parâmetro id da tentativa em qt.id=?