Seitenleiste

Community

SQL

Grundlagen

Datenbanksysteme

Client/Server

Eingebettet

Inhaltsverzeichnis

Outer Join

Zu Beginn ein einführendes Beispiel. Wir haben wieder unsere 2 Tabellen und wollen wieder die Mitarbeiter mit deren Abteilung angezeigen. Allerdings wollen wir auch wirklich ALLE Abteilungen sehen (auch jene, in denen kein Mitarbeiter arbeitet)

Mit dem OUTER JOIN werden auch Zeilen angezeigt, die sonst nicht angezeigt werden.

Syntax

SELECT ...
FROM Tabellenname1 [Alias] {FULL | LEFT | RIGHT} OUTER JOIN Tabellenname2 [Alias]
  • FULL
    • Alle Datensätze der linken UND rechten Tabelle sollen mind. 1 mal angezeigt werden
  • LEFT
    • Alle Datensätze der linken Tabelle sollen mind. 1 mal angezeigt werden
  • RIGHT
    • Alle Datensätze der rechten Tabelle sollen mind. 1 mal angezeigt werden

Nun zu der Lösung unseres Beispiels:

SELECT Name, Abteilungsname
FROM Abteilung a LEFT OUTER JOIN Mitarbeiter m USING(Abteilungsnummer)

Alte Syntax

In der alten Syntaxschreibweise gibt es keinen FULL OUTER JOIN. RIGHT bzw. LEFT werden durch ein „(+)“ gekennzeichnet. Das „(+)“ steht auf der Seite jender Tabelle die mit null-Werten ergänzt werden muss. Das obige Beispiel würde wie folgt aussehen:

SELECT Name, Abteilungsname
FROM (+)Abteilung, Mitarbeiter