Der SQL FULL OUTER JOIN verbindet alle Daten aus der linken und rechten Tabelle und gibt alle Zeilen aus beiden Tabellen wieder.

SELECT Spalte 
FROM TabelleA
FULL OUTER JOIN TabelleB 
ON TabelleA.Spalte = TabelleB.Spalte; 
SQL FULL OUTER JOIN Venn

Der FULL OUTER JOIN ist eine Kombination aus dem LEFT JOIN und dem RIGHT JOIN. Mit ihm geben wir also die Zeilen beider Tabellen aus. Die Zeilen, die sich in den ON-Spalten überschneiden, werden als eine Zeile ausgegeben. Die Zeilen, die sich nicht überschneiden enthält für die Spalten der anderen Tabelle nur NULL Werte.

FULL OUTER JOIN - Beispiel

Die Personalabteilung der DataMines GmbH möchte eine Gesamtübersicht aller Abteilungen haben. In der Datenbank sind die Tabellen Personal und Abteilungen getrennt. 

Personal

Name

Geschlecht

Abteilungs_ID

Max Mustermann

M

1

Erika Musterfrau

M

2

Frauke Herrmann

W

3

Abteilung

Abteilungs_ID

Abteilungsname

2

Cyber Security

3

Marketing

4

Business Intelligence

SELECT * 
FROM Personal 
FULL OUTER JOIN Abteilung 
ON Personal.Abteilung_ID = Abteilung.Abteilung_ID;  

Name

Geschlecht

Abteilungs_ID

Abteilungs_ID

Abteilungsname

Max
Mustermann

M

1

(null)

(null)

Erika Musterfrau

M

2

2

Cyber Security

Frauke
Herrmann

W

3

3

Marketing

(null)

(null)

(null)

4

Business Intelligence

Man erkennt, dass niemand in der Business Intelligence Abteilung arbeitet. Der Mitarbeiter Max Mustermann ist keiner Abteilung zugeteilt.

FULL OUTER JOIN in MySQL

MySQL unterstützt den FULL OUTER JOIN nicht. Anstelle dessen müssen ein LEFT JOIN und ein RIGHT JOIN derselben Tabellen über einen UNION Befehl miteinander verbunden werden:

SELECT Spalte FROM TabelleA 
LEFT JOIN TabelleB ON (TabelleA.Spalte_X = TabelleB.Spalte_Y)

UNION

SELECT Spalte FROM TabelleA 
RIGHT JOIN TabelleB ON (TabelleA.Spalte_X = TabelleB. Spalte_Y); 

ARTIKEL TEILEN

Hast du Fragen? Hinterlasse einen Kommentar!