SQL

SELECT-FROM bei verbundenen Relationen

9. 06. 2012

Wenn mehrere Tabellen (Relationen) vorliegen, können diese miteinander kombiniert werden. Hier gibt es zunächst 2 große Möglichkeiten:

Das „Kartesische Produkt“

Es werden alle Kombinationen ausgegeben. Das Ergebnis entspricht quasi einer Multiplikation. Die Anzahl der Ergebnisse ist die Anzahl der Ergebnisse der ersten Relation mal der Anzahl der Ergebnisse der 2. Relation. Dies macht oft dann Sinn, wenn man zunächst alle Ergebnisse möchte und diese anschließend mit WHERE filtert. Zum Beispiel:

„Finde alle Kredite und die zugehörigen Kreditnehmer“:

SELECT *
FROM kreditnehmer, kredit
WHERE kreditnehmer.kreditnummer = kredit.kreditnummer

JOIN

JOIN verbindet 2 Relationen entsprechend einen speziellen JOIN-Typ über eine JOIN-Bedingung.

JOIN-Typen

  • INNER JOIN: Ergebnisse bestehen aus den Attributen der linken und der rechten Relation
  • LEFT OUTER JOIN: Alle Ergebnisse der linken Relation und nur die dazupassenden der rechten Relation; wenn dieses nicht existiert, wird mit NULL aufgefüllt
  • RIGHT OUTER JOIN: Wie LEFT OUTER JOIN, nur umgekehrt
  • FULL OUTER JOIN: Eine Kombination von LEFT und RIGHT OUTER JOIN

JOIN-Bedingung

  • NATURAL: Es werden alle Spalten der beiden Relationen, die den gleichen Namen haben, verglichen und nur die verbunden, in denen alle Werte gleich sind
  • ON Prädikat: Es wird genau das angegebenen Feld verglichen (z. B. „…ON kredit.kreditnummer = kreditnehmer.kreditnummer“)
  • USING: Genau wie ON, allerdings wird die angegebene Spalte nur einmal ausgegeben. Außerdem unterscheidet sich die Syntax!

Beispiele dazu:

SELECT * FROM kreditnehmer
INNER JOIN kredit ON kreditnehmer.kreditnummer = kredit.kreditnummer
SELECT * FROM kreditnehmer
NATURAL INNER JOIN kredit
SELECT * FROM kreditnehmer
INNER JOIN kredit USING (kreditnummer)

Quelle

  • Schikuta, Erich: Datenmodellierung und Datenbanksysteme, FFH, 2008

image_print
1 Stern2 Sterne3 Sterne4 Sterne5 Sterne
Loading...

Author