我有一个数据库,我已经存储了一个表与用户信息,一个表与测试(答案和点)和一个表与每个问题的用户的答案。每个问题总共值1分,可能有一个或多个正确的答案。如果所有的答案都是正确的,并且用户只检查一个答案,他只会得到0.25分。 我想做一个查询来检查每个用户的总分,但我没有找到一个好的方法。MySQL数据库为考试(测验测验)查询积分
用户表:
+--------+------------+-----------+-------------------+------------+--------+
| userID | first_name | last_name | email | password | points |
+--------+------------+-----------+-------------------+------------+--------+
| 1 | Jhon | Jhonny | [email protected] | secretPass | 0 |
| 2 | Dan | Dan | [email protected] | 1234 | 0 |
| 3 | Dick | Pop | [email protected] | 123456 | 0 |
| 4 | Mihaela | Micky | [email protected] | pass12 | 0 |
+--------+------------+-----------+-------------------+------------+--------+
问表: (1表示答案是好的 - 我们可以有多个正确答案)
+------------+--------------------------------------------------+---+---+---+---+
| questionID | question | a | b | c | d |
+------------+--------------------------------------------------+---+---+---+---+
| 1 | which of these are colors? | 1 | 0 | 0 | 1 |
| 2 | which of these are fruits? | 1 | 1 | 1 | 0 |
| 3 | which of these are programming language? | 0 | 1 | 1 | 0 |
| 4 | What is IPv6? | 0 | 0 | 0 | 1 |
+------------+--------------------------------------------------+---+---+---+---+
用户回答表:(1意味着用户选择回答但可能是inccorect)
+------------+--------+---+---+---+---+
| questionID | userID | a | b | c | d |
+------------+--------+---+---+---+---+
| 1 | 1 | 1 | 1 | 0 | 0 |
| 2 | 1 | 1 | 1 | 1 | 0 |
| 1 | 3 | 1 | 0 | 1 | 1 |
| 1 | 4 | 1 | 1 | 1 | 0 |
| 3 | 1 | 1 | 0 | 1 | 1 |
| 4 | 1 | 1 | 0 | 1 | 1 |
| 1 | 2 | 1 | 1 | 0 | 0 |
| 2 | 2 | 0 | 1 | 0 | 1 |
| 3 | 2 | 0 | 1 | 1 | 1 |
| 4 | 2 | 1 | 1 | 0 | 1 |
| 2 | 3 | 1 | 0 | 0 | 1 |
| 3 | 3 | 1 | 0 | 1 | 1 |
| 4 | 3 | 1 | 0 | 1 | 1 |
| 2 | 4 | 0 | 1 | 1 | 1 |
| 3 | 4 | 1 | 0 | 0 | 1 |
| 4 | 4 | 0 | 0 | 1 | 0 |
+------------+--------+---+---+---+---+
我想你是指5个答案中的1个正确= 0.2分(即1的20%),而不是0.25? –
现在还不清楚你的问题在哪里。你当然知道你应该加入问题和答案。您还知道如何比较值,您可能知道如何汇总每个用户的数据。那么你到底在哪里卡住? –