Sie müssen eines von zwei Dingen tun (und beide gehen davon aus, dass Table0
hat alle Instanzen von num
) -
-
Wenn alle Zeilen für die 'Blatt'-Tabellen (1 - 4) bereits summiert sind, dann ein einfacher
LEFT JOIN
(mit einemCOALESCE()
in der Auswahl) reicht aus - Sie brauchen nicht einmal denGROUP BY
. -
Wenn Sie die Summe der Zeilen benötigen, müssen Sie sie vorher summieren der Join, da sonst mehrere Zeilen pro Zahl in verschiedenen Tabellen dazu führen, dass sich die Ergebnisse multiplizieren .
Etwa so:
SELECT Table0.num, COALESCE(Table1.qty, 0), COALESCE(Table2.qty, 0),
COALESCE(Table3.qty, 0), COALESCE(Table4.qty, 0)
FROM Table0
LEFT JOIN (SELECT num, SUM(qty1) as qty
FROM Table1
GROUP BY num) Table1
ON Table1.num = Table0.num
LEFT JOIN (SELECT num, SUM(qty2) as qty
FROM Table2
GROUP BY num) Table2
ON Table2.num = Table0.num
LEFT JOIN (SELECT num, SUM(qty3) as qty
FROM Table3
GROUP BY num) Table3
ON Table3.num = Table0.num
LEFT JOIN (SELECT num, SUM(qty4) as qty
FROM Table4
GROUP BY num) Table4
ON Table4.num = Table0.num
(funktionierendes SQLFiddle-Beispiel )