3 つのテーブル ジョイン結合全体でリレーションを個別にカウントします。
2 つのテーブルを結合するとき、count 句と group by 句を使用して、1 つのテーブルの ID が別のテーブルのリレーションとして表示される回数をカウントする方法は知っていますが、2 つのテーブルとのリレーションの数を 2 つカウントする方法がわかりません。
次のサンプル データを含む 3 つのテーブル A、B、および C を検討してください。
Table A Table B Table C
|id| |id|A_id| |id|A_id|
-- -- ---- -- ----
|1 | |1 |1 | |1 |1 |
|2 | |2 |1 | |2 |3 |
|3 | |3 |3 | |3 |2 |
|4 | |3 |4 | |4 |3 |
テーブル B と C の両方で、列 A_id を NULL にすることはできませんが、テーブル C では、列 B_id を NULL にすることができます。
テーブル AI のすべてのエントリに対して、テーブル B の関連エントリの数と、テーブル C の関連エントリの数を取得するようなクエリが必要です。上記のデータの場合、次を返すクエリが必要です。
A_id|Count(B)|Count(C)
---- -------- --------
|1 |2 |1
|2 |0 |1
|3 |1 |2
|4 |1 |0