参见表格:http://dl.dropbox.com/u/10356431/Shared/screen.png
请帮我构建一个SQL,以便在特定test_id的在线测试中找到正确回答的问题。
我已经构建了一个。
SELECT COUNT(UNIQUE d.question_id) AS CORRECT
FROM test_response d,
question_response r
WHERE d.response_id = r.question_resp_id
AND r.correct_response_flag != 'N'
AND d.test_id = '10113'
但问题是,虽然它会准确地找到单项选择题,但如果它是一个多项选择,如果4个答案中的2个是正确的,则不会选择一个将其视为正确回答的问题,这是不准确的。
逻辑:生成一个问题集并显示给用户。每个测试都有自己的id使用特定的问题集。用户选择的响应存储在test_response
表中。
答案 0 :(得分:0)
更新:这不适用于OP的表格设计,其中为4个答案问题创建了2行
我认为你需要首先检查每个问题是否有正确的答案,然后在没有错误答案的情况下计算问题:
select
count(*) - count(incorrect_answers_per_question) correct
from (
select
d.test_id,
d.question_id,
sum(case when r.correct_response_flag = 'N' then 1 end) incorrect_answers_per_question
from test_response d
join question_response r on d.response_id = r.question_resp_id
where d.test_id = '10113'
group by d.test_id, d.question_id
)