0

我有 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 个查询中完成,然后允许多个问题条目和多个用户?

非常感谢

4

1 回答 1

0

会不会是你要找的这个?

SQL 演示

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 |
于 2013-02-26T12:05:20.810 回答