匿名用户
我猜每个表中的每个列都是唯一的,也就是说每个表都没有重复的值。你的小提琴就是这样。
而且,我猜没有用户会在特定的事件中重复尝试回答特定的问题。
下面是一个纯SQL查询来获取您想要的内容。(https://www.db-fiddle.com/f/krksyag954msn7bebtgupg/2)SELECT question_attempts.event_id,
users.id user_id, users.first_name, users.last_name,
SUM(questions.points) points
FROM question_attempts
JOIN questions ON question_attempts.question_id = questions.id
JOIN answers ON question_attempts.answer_id = answers.id
JOIN users ON question_attempts.user_id = users.id
WHERE answers.is_correct = 1
GROUP BY question_attempts.event_id,
users.id, users.first_name, users.last_name
为什么这管用?您的表将所有其他表联系在一起。拉入每次回答尝试的问题。我们需要它,因为它说明问题值得多少。/li>
拉入每次尝试的答案。我们需要它,因为我们需要知道特定答案获取用户名。/li>
然后,SUM/GROUP BY将每个事件和用户的正确答案的点数相加。
此查询获取所有事件和用户。您可以添加WHERE ... AND question_attempts.event_id = 6
或者其他诸如此类的事情来得到一个事件的结果。
您可以使用ORDER BY question_attempts.event_id,
SUM(questions.points) DESC,
users.id
以每个事件的分数降序(最高的第一)获得输出。