私が求めていることを明確にするために、以下の私の質問のサンプルコンテキストを少し示します...
スキーマ
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
私が結果セットに入れたいのは、ユーザーごとに 1 行、トピックごとに 2 つの列を持つテーブルです。1 つはトピックの正解の合計を示し、もう 1 つは不正解の合計を示します。そのトピックのために。上記のサンプル データの場合、この結果セットは次のようになります。
私の望む結果
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
明らかに、トピック テーブルにさらにトピックがあった場合、このクエリに既存のトピックごとに新しい correct_sum と illegal_sums を含めたいので、sum 関数に topic_ids をハードコーディングせずにこれを書き込む方法を探しています。私のselect句の。
ARel を使って、この種の魔法をかけるスマートな方法はありますか?