전적으로 무들의 처음입니다. 나는 퀴즈 질문 분석 목적을 위해 생각해보고있다.Moodle에서 퀴즈 질문에 대한 정확한 응답/응답 수를 얻는 방법?
어떻게받을 수 있습니까? 올바른 응답 또는 잘못된 응답 및 해당 응답을 담당 한 사람의 user_id가 포함됩니다. 이미 그걸 저장하고있는 테이블이 있습니까? 퀴즈에 사용
전적으로 무들의 처음입니다. 나는 퀴즈 질문 분석 목적을 위해 생각해보고있다.Moodle에서 퀴즈 질문에 대한 정확한 응답/응답 수를 얻는 방법?
어떻게받을 수 있습니까? 올바른 응답 또는 잘못된 응답 및 해당 응답을 담당 한 사람의 user_id가 포함됩니다. 이미 그걸 저장하고있는 테이블이 있습니까? 퀴즈에 사용
데이터베이스 테이블은 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
동일한 과제와 나는 그것을 마침내 풀었다. 질문이 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
행운을 빈다!