Du skal gøre en af to ting (og begge disse forudsætter, at Tabel0
). har alle forekomster af num
) -
-
Hvis alle rækker allerede er summeret for 'blade'-tabellerne (1 - 4), så en simpel
LEFT JOIN
(med enCOALESCE()
i valget) vil være tilstrækkeligt - du behøver ikke engangGROUP BY
. -
Hvis du har brug for at summere rækkerne, bliver du nødt til at summere dem før joinforbindelsen, givet at ellers vil flere rækker pr. antal i forskellige tabeller få resultaterne til at multiplicere .
Noget som dette:
SELECT Table0.num, COALESCE(Tabel1.qty, 0), COALESCE(Table2.ty, 0), COALESCE(Table3.ty, 0), COALESCE(Table4.ty, 0)FROM Table0LEFT JOIN ( VÆLG antal, SUM(antal1) som antal FRA Tabel1 GRUPPER EFTER antal) Tabel1ON Tabel1.num =Tabel0.numVENSTRE JOIN (VÆLG antal, SUM(antal2) som antal FRA Tabel2 GRUPPER EFTER antal) Tabel2ONTabel2.num =Tabel0.numVENSTRE JOIN ( VÆLG antal, SUM(antal3) som antal FRA Tabel3 GRUPPER EFTER antal) Tabel3ON Tabel3.num =Tabel0.numVENSTRE JOIN (VÆLG antal, SUM(antal4) som antal FRA Tabel4 GRUPPER EFTER antal) Tabel4ON Tabel4.num =Tabel0.num kode>
(fungerende SQLFiddle-eksempel
)