Ermittelt die Anzahl der Fremdschlüssel aus mehreren Tabellen
Ich habe 3 Tabellen, wobei Tabelle B & C über Fremdschlüssel auf Tabelle A verweist. Ich möchte eine Abfrage in PostgreSQL schreiben, um alle IDs von A und auch deren Gesamtvorkommen von B & C zu erhalten.
a | b | c
-----------------------------------
id | txt | id | a_id | id | a_id
---+---- | ---+----- | ---+------
1 | a | 1 | 1 | 1 | 3
2 | b | 2 | 1 | 2 | 4
3 | c | 3 | 3 | 3 | 4
4 | d | 4 | 4 | 4 | 4
Gewünschte Ausgabe (nur die ID von A & Gesamtanzahl in B & C):
id | Count
---+-------
1 | 2 -- twice in B
2 | 0 -- occurs nowhere
3 | 2 -- once in B & once in C
4 | 4 -- once in B & thrice in C
SQL bisherSQL-Geige :
SELECT a_id, COUNT(a_id)
FROM
( SELECT a_id FROM b
UNION ALL
SELECT a_id FROM c
) AS union_table
GROUP BY a_id
Die Abfrage, die ich geschrieben habe, ruft B & C ab und zählt die Vorkommen. Wenn der Schlüssel jedoch nicht in B oder C vorkommt, wird er in der Ausgabe nicht angezeigt (z. B. id = 2 in der Ausgabe). Wie starte ich meine Auswahl aus Tabelle A & Join / Union B & C, um die gewünschte Ausgabe zu erhalten?