Left Join (SQL): Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: Der Left Join ist, ähnlich wie der Right Join ein besonderer Join. Hier werden wie beim Cross Join ein [...) |
Kurt (Diskussion | Beiträge) |
||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
===Syntax=== | ===Syntax=== | ||
Ein Left Join wird mit dem [[Schlüsselwort]] '''LEFT JOIN''' erzeugt, optinal kann noch '''OUTER''' hinzugefügt werden. | Ein Left Join wird mit dem [[Schlüsselwort]] '''LEFT JOIN''' erzeugt, optinal kann noch '''OUTER''' hinzugefügt werden. | ||
− | < | + | <syntaxhighlight lang="sql"> |
SELECT * FROM tabelle1 t1 LEFT JOIN tabelle2 t2 WHERE t1.spalte = t2.spalte; | 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; | SELECT * FROM tabelle1 t1 LEFT OUTER JOIN tabelle2 t2 WHERE t1.spalte = t2.spalte; | ||
− | </ | + | </syntaxhighlight> |
===Beispiel=== | ===Beispiel=== | ||
Zeile 46: | Zeile 46: | ||
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. | 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. | ||
− | < | + | <syntaxhighlight lang="sql"> |
SELECT * FROM ortstabelle o LEFT JOIN personentabelle p WHERE o.Ort_ID = p.Ort_ID; | SELECT * FROM ortstabelle o LEFT JOIN personentabelle p WHERE o.Ort_ID = p.Ort_ID; | ||
− | </ | + | </syntaxhighlight> |
{| {{Prettytable}} | {| {{Prettytable}} | ||
! Ort_ID | ! Ort_ID | ||
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.