2015-01-31 3 views

답변

-1

데이터베이스 테이블은 https://docs.moodle.org/dev/Quiz_database_structure에 포함되어 https://docs.moodle.org/dev/Overview_of_the_Moodle_question_engine#Detailed_data_about_an_attempt

2 링크 주어진 샘플 쿼리이기 때문에이는 초보되지 않습니다 : 내가했다

SELECT 
    quiza.userid, 
    quiza.quiz, 
    quiza.id AS quizattemptid, 
    quiza.attempt, 
    quiza.sumgrades, 
    qu.preferredbehaviour, 
    qa.slot, 
    qa.behaviour, 
    qa.questionid, 
    qa.maxmark, 
    qa.minfraction, 
    qa.flagged, 
    qas.sequencenumber, 
    qas.state, 
    qas.fraction, 
    timestamptz 'epoch' + qas.timecreated * INTERVAL '1 second', // OR FROM_UNIXTIME(qas.timecreated) IF you are ON MySQL. 
    qas.userid, 
    qasd.name, 
    qasd.VALUE, 
    qa.questionsummary, 
    qa.rightanswer, 
    qa.responsesummary 

FROM mdl_quiz_attempts quiza 
JOIN mdl_question_usages qu ON qu.id = quiza.uniqueid 
JOIN mdl_question_attempts qa ON qa.questionusageid = qu.id 
JOIN mdl_question_attempt_steps qas ON qas.questionattemptid = qa.id 
LEFT JOIN mdl_question_attempt_step_data qasd ON qasd.attemptstepid = qas.id 

WHERE quiza.id = 675767 

ORDER BY quiza.userid, quiza.attempt, qa.slot, qas.sequencenumber, qasd.name 
0

동일한 과제와 나는 그것을 마침내 풀었다. 질문이 mdl_question_attempt_steps라는 테이블에서 등급이 매겨진 것을 발견했습니다. 나는 무들의 질문에 참여하고 질문별로 그룹화하고 옳고 그른 대답을 세 었습니다.

매우 복잡한 moodle 코드를 검색하고 읽는 데 8 시간 이상이 소요 된 후 이것이 쿼리입니다.

SELECT questionid, 
COUNT(CASE WHEN state = "gradedright" THEN 1 END) AS rightanswer, 
COUNT(CASE WHEN state = "gradedwrong" THEN 1 END) AS wronganswer 
FROM `mdl_question_attempt_steps` 
JOIN mdl_question_attempts ON ( `questionattemptid` = mdl_question_attempts.id) 
JOIN mdl_question ON ( `questionid` = mdl_question.id) 
GROUP BY questionid 

행운을 빈다!

관련 문제