Databases Reference
In-Depth Information
3) Sowohl in der linken als auch in der rechten Tabelle sollen Tupel ohne Entspre-
chung in der anderen Tabelle übernommen werden; sog. Full Outer Join.
Anwendungsbeispiele
Die Aufzählung von Kunden und zugehörigen Bestellungen unter Einschluss der
Kunden, von denen noch keine Bestellung eingegangen ist, erhalten wir mit fol-
gender Anweisung:
SELECT k.name, b.bestell_nr, b.bestelldatum
FROM kunde AS k
LEFT OUTER JOIN bestellung AS b
ON k.kunden_nr = b.kunden_nr;
Dabei werden die beiden Spalten
bestell_nr
und
bestelldatum
für Kunden ohne
Bestellung mit Nullmarken aufgefüllt.
name bestell_nr bestelldatum
============================== =========== ============
Voss, Hans (NULL) (NULL)
Stein, Peter 151 2000-04-28
Berger, Uwe (NULL) (NULL)
Randers, Nis 152 2000-04-30
Randers, Nis 154 2000-05-15
Andresen, Ute (NULL) (NULL)
Stuff, Werner 153 2000-05-12
Staack, Hannes (NULL) (NULL)
Wenden wir auf dasselbe Tabellenpaar den
RIGHT OUTER Join
an, sieht das Resultat
anders aus:
SELECT name, bestell_nr, bestelldatum
FROM kunde RIGHT OUTER JOIN bestellung
ON kunde.kunden_nr = bestellung.kunden_nr;
name bestell_nr bestelldatum
============================== =========== ============
Stein, Peter 151 2000-04-28
Randers, Nis 152 2000-04-30
Stuff, Werner 153 2000-05-12
Randers, Nis 154 2000-05-15
Es erscheinen nur die vorhandenen Bestellungen mit den zugehörigen Kunden.
Die rechte Variante des äußeren Verbundes erbringt in diesem Fall also dasselbe
Resultat wie der innere Verbund. Das liegt daran, dass es wegen der referenziellen
Integritätsbedingung »
FOREIGN
KEY
kunden_nr REFERENCES kunde
«, die wir beim
Erzeugen der Tabelle
bestellung
angewandt hatten, keine Bestellungen ohne zuge-
hörigen Kunden geben kann.