我有2个表格,一个用于测验问题,另一个用于测验问题的答案表。
第一个表的结构如下
questionID attribute value
1 title some textQ1
1 option1 some text
1 option2 some text
1 option3 some text
1 correct 2
2 title some textQ2
2 option1 some text
2 option2 some text
2 option3 some text
2 correct 1,2
第二个表有来自用户的回复
userID questionID value
user1 1 3
user2 1 2
user3 1 2
user3 2 1
user3 2 2
user2 2 3
然后我希望能够获得每个用户的分数,例如每个正确答案1分。
所以数据集看起来像
user score
user3 3
user2 1
user1 0
这可以在1个查询中执行,然后允许多个问题条目以及多个用户吗?
非常感谢
答案 0 :(得分:0)
你正在寻找这个吗?
select r.userid,
sum(case when find_in_set(r.value, q.value) then 1
else 0
end) as score
from responses r
left join questions q
on r.questionid = q.questionid
where q.attribute = 'correct'
group by r.userid
order by score desc
;
| USERID | SCORE |
------------------
| user3 | 3 |
| user2 | 1 |
| user1 | 0 |