2つのことのいずれかを実行する必要があります(これらは両方ともTable0
を想定しています num
のすべてのインスタンスがあります )-
-
'leaf'テーブル(1〜4)のすべての行がすでに合計されている場合は、単純な
LEFT JOIN
(COALESCE()
を使用 選択)で十分です-GROUP BY
も必要ありません 。 -
行を合計する必要がある場合は、前にそれらを合計する必要があります。 結合。そうでない場合、異なるテーブルのnumごとに複数の行が発生すると、結果が乗算されます。 。
このようなもの:
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
(SQLFiddleの例 )