我正在开发一个php,mysql的在线测试系统。当学生提交测试时,其标记是根据使用以下查询从数据库匹配的正确答案计算的。
SELECT qa.question_id, qa.test_id, uta.user_answer,uta.user_id, qa.type,
qa.answers correct_answer,
CASE WHEN uta.user_answer = qa.answers THEN 'correct' ELSE 'incorrect' END
AS count(status)
FROM questions_answer qa
LEFT JOIN
(
SELECT user_id, type, test_id, question_id,
GROUP_CONCAT(answers ORDER BY answers) AS user_answer,
timestamp from user_test_answers
WHERE test_id = '1'
GROUP BY user_id, question_id
) uta
ON qa.question_id = uta.question_id
where qa.test_id=1 GROUP BY uta.user_id
我的问题是: 我想要计算时间和#34;正确"出现在表格中的字段STATUS字段中... 这些没有正确答案作为函数中的参数传递....我不能得到其他学生的结果....所以我想根据在user_id和显示顶部的字段中出现的CORRECT字符串进行比较3个得分手..如何做到这一点"在特定测试中排名前3的得分者" ..
我是MySQL的新手..
答案 0 :(得分:0)
如果我不得不猜测,以下内容应该会给你你想要的东西。变化:
CASE WHEN uta.user_answer = qa.answers THEN 'correct' ELSE 'incorrect' END AS count(status)
到
sum(uta.user_answer = qa.answers) as NumCorrect