Anda perlu melakukan salah satu dari dua hal (dan keduanya mengasumsikan bahwa Table0
memiliki semua contoh num
) -
-
Jika semua baris sudah dijumlahkan untuk tabel 'daun' (1 - 4), maka
LEFT JOIN
sederhana (denganCOALESCE()
di pilih) sudah cukup - Anda bahkan tidak memerlukanGROUP BY
. -
Jika Anda perlu menjumlahkan baris, Anda harus menjumlahkannya sebelum gabungan, mengingat bahwa jika tidak, beberapa baris per angka dalam tabel yang berbeda akan menyebabkan hasil menjadi berlipat ganda .
Sesuatu seperti ini:
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
(berfungsi contoh SQLFiddle )