Der natürliche Verbund

Theorie Icon In der Praxis trifft man häufig den Fall an, dass nicht alle Daten in einer einzigen Tabelle vorliegen, sondern mehrere Tabellen existieren. An dieser Stelle kommen JOINS zum Einsatz, die dazu dienen, aus den Daten zweier Tabellen eine Ergebnistabelle zu bilden. Man unterscheidet zwischen INNER JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN und FULL (OUTER) JOIN.

Für das bessere Verständnis soll die betrachtete Tabelle Schueler um ein weiteres Attribut erweitert werden: GTA_id. Zusätzlich existiert jetzt neben der Tabelle Schueler eine Tabelle GTA. Im Folgenden werden die genannten Join-Arten auf diesen Tabellen angewendet, um die Unterschiede besser darstellen zu können.

Schueler

S_NrNachnameVornameKlasseGTA_Nr
1KlugeLuca10bnull
2AckermannKatrin9a2
3BoehmUwe8c1

GTA

GTA_NrBeschreibung
1Schach
2Tastaturschreiben
3Jugend forscht

(INNER) JOIN

Der Inner Join liefert alle Daten zurück, die entsprechend der Bedingung (mit ON mitgeteilt) übereinstimmen.


SELECT Schueler.Vorname, GTA.Bezeichnung
FROM Schueler
INNER JOIN GTA
ON Schueler.GTA_Nr = GTA.GTA_Nr;

VornameBezeichnung
KatrinTastaturschreiben
UweSchach

LEFT (OUTER) JOIN

Der LEFT OUTER JOIN liefert alle Daten der linken Tabelle zurück und weist ihnen die Daten der rechten Tabelle entsprechend der Bedingung zu.


SELECT Schueler.Vorname, GTA.Bezeichnung
FROM Schueler
LEFT JOIN GTA
ON Schueler.GTA_Nr = GTA.GTA_Nr;

VornameBezeichnung
Lucanull
KatrinTastaturschreiben
UweSchach

RIGHT (OUTER) JOIN

Der RIGHT (OUTER) JOIN liefert alle Daten der rechten Tabelle zurück und weist ihnen die Daten der linken Tabelle entsprechend der Bedingung zu.


SELECT Schueler.Vorname, GTA.Bezeichnung
FROM Schueler
RIGHT JOIN GTA
ON Schueler.GTA_Nr = GTA.GTA_Nr;

VornameBezeichnung
KatrinTastaturschreiben
UweSchach
nullJugend forscht

FULL (OUTER) JOIN

Der FULL (OUTER) JOIN liefert alle Daten aus beiden Tabellen zurück und ordnet sie entsprechend der Bedingung einander zu.


SELECT Schueler.Vorname, GTA.Bezeichnung
FROM Schueler
FULL OUTER JOIN GTA
ON Schueler.GTA_Nr = GTA.GTA_Nr;

VornameBezeichnung
KatrinTastaturschreiben
UweSchach
Klugenull
nullJugend forscht