下面是我的问题的一些示例上下文,以帮助澄清我在问什么......
架构
Users
- id
- name
Answers
- id
- user_id
- topic_id
- was_correct
Topics
- id
- name
数据
Users
id | name
1 | Gabe
2 | John
Topics
id | name
1 | Math
2 | English
Answers
id | user_id | topic_id | was_correct
1 | 1 | 1 | 0
2 | 1 | 1 | 1
3 | 1 | 2 | 1
4 | 2 | 1 | 0
5 | 2 | 2 | 0
在结果集中,我想要一个表格,每个用户一行,每个主题两列,一个显示主题正确答案的总和,一个显示错误答案的总和对于那个话题。对于上面的示例数据,此结果集如下所示:
我想要的结果
users.id | users.name | topic_1_correct_sum | topic_1_incorrect_sum | topic_2_correct_sum | topic_2_incorrect_sum
1 | Gabe | 1 | 1 | 1 | 0
2 | John | 0 | 1 | 0 | 1
显然,如果 Topics 表中有更多主题,我希望这个查询为每个存在的主题包含新的正确总和和不正确总和,所以我正在寻找一种方法来编写它而不将主题 ID 硬编码到总和函数中我的选择子句。
有没有一种聪明的方法可以用 ARel 来魔术这种事情?