sql >> Database teknologi >  >> RDS >> Mysql

SQL Full Outer Join med flere tabeller

Du skal gøre en af ​​to ting (og begge disse forudsætter, at Tabel0). har alle forekomster af num ) -

  1. Hvis alle rækker allerede er summeret for 'blade'-tabellerne (1 - 4), så en simpel LEFT JOIN (med en COALESCE() i valget) vil være tilstrækkeligt - du behøver ikke engang GROUP BY .

  2. 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 )



  1. Får PHP-fejl Advarsel:fputcsv() forventer, at parameter 2 er array

  2. Valg af forskellige værdier i en samlet tabel

  3. SQLite introducerer UNIXEPOCH()-funktionen

  4. Hvordan gemmer man flere muligheder i en enkelt tabel?