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) Keine Bearbeitungszusammenfassung |
||
| (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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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.
