Left Join (SQL): Unterschied zwischen den Versionen
K |
Kurt (Diskussion | Beiträge) |
||
Zeile 75: | Zeile 75: | ||
|- | |- | ||
| 3 | | 3 | ||
− | | | + | | München |
| NULL | | NULL | ||
| NULL | | NULL |
Aktuelle Version vom 18. Juni 2018, 09:07 Uhr
Der Left Join ist, ähnlich wie der Right Join ein besonderer Join. Hier werden wie beim Cross Join ein Kreuzprodukt über die beiden Mengen, welches über die WHERE-Bedingung eingegrenzt werden muss. Jedoch werden hierbei allen Elementen ( Zeilen) der zweiten Tabelle, die keine entsprechenden Elemente aus der ersten Tabelle entsprechen, werden mit NULL aufgefüllt.
Syntax
Ein Left Join wird mit dem Schlüsselwort LEFT JOIN erzeugt, optinal kann noch OUTER hinzugefügt werden.
SELECT * FROM tabelle1 t1 LEFT JOIN tabelle2 t2 WHERE t1.spalte = t2.spalte;
SELECT * FROM tabelle1 t1 LEFT OUTER JOIN tabelle2 t2 WHERE t1.spalte = t2.spalte;
Beispiel
Tabelle 1 - Personentabelle:
Person_ID | Name | Ort_ID |
---|---|---|
1 | person1 | 1 |
2 | person2 | 1 |
3 | person3 | 2 |
Tabelle 2 - Ortstabelle:
Ort_ID | Ortsname |
---|---|
1 | Berlin |
2 | Hamburg |
3 | München |
Bei Bildung des Joins über die beiden Tabellen, werden die Spalten 'Ort_ID verbunden und somit ergibt sich folgendes Bild. Gäbe es noch mehr gleichnamige Spalten würden diese auch verwendet werden.
SELECT * FROM ortstabelle o LEFT JOIN personentabelle p WHERE o.Ort_ID = p.Ort_ID;
Ort_ID | Ortsname | Person_ID | Name | Ort_ID |
---|---|---|---|---|
1 | Berlin | 1 | person1 | 1 |
1 | Berlin | 2 | person2 | 1 |
2 | Hamburg | 3 | person3 | 2 |
3 | München | NULL | NULL | NULL |
Da es für München keine Person gibt wird dieser Eintrag mit NULL ergänzt.