Verknüpfungstypen
Aktualisiert: November 2007
Beim Verknüpfen von Tabellen bestimmt der verwendete Verknüpfungstyp darüber, welche Zeilen im Resultset aufgeführt werden. Sie können die folgenden Verknüpfungstypen erstellen:
Innere Verknüpfung Bei dieser Verknüpfung werden nur die Zeilen angezeigt, die in beiden verknüpften Tabellen übereinstimmen. (Dies ist der Standardverknüpfungstyp im Abfrage- und Ansicht-Designer.) Sie können z. B. die Tabellen titles und publishers verknüpfen, um ein Resultset mit dem Namen des Herausgebers für jeden Titel zu erstellen. In einer inneren Verknüpfung werden Titel, für die keine Informationen zum Herausgeber vorliegen, sowie Herausgeber ohne gespeicherte Titel nicht in das Resultset aufgenommen. Für eine solche Verknüpfung kann folgende SQL-Anweisung formuliert werden:
SELECT title, pub_name FROM titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id
Hinweis: Spalten mit dem Wert NULL liefern bei keinem Wert eine Übereinstimmung, wenn Sie eine innere Verknüpfung erstellen, und werden daher nicht in das Resultset aufgenommen. Nullwerte liefern keine Übereinstimmung mit anderen Nullwerten.
Äußere Verknüpfung Bei dieser Verknüpfung werden Zeilen auch dann in das Ergebnis aufgenommen, wenn keine zugehörigen Spalten in der verknüpften Tabelle vorhanden sind. Sie können unter drei Variationen einer äußeren Verknüpfung wählen, um festzulegen, welche Zeilen ohne Übereinstimmung im Ergebnis angezeigt werden sollen:
Linke äußere Verknüpfung Alle Zeilen der zuerst angegebenen Tabelle (d. h. der "linken" Tabelle, die in der JOIN-Klausel ganz links steht) werden aufgenommen. Zeilen in der rechts stehenden Tabelle ohne Übereinstimmung werden nicht im Ergebnis angezeigt. Die folgende SQL-Anweisung ist ein Beispiel für eine linke äußere Verknüpfung der Tabellen titles und publishers, bei der alle Titel aufgenommen werden, auch wenn keine Informationen zum Herausgeber eines Titels vorliegen:
SELECT titles.title_id, titles.title, publishers.pub_name FROM titles LEFT OUTER JOIN publishers ON titles.pub_id = publishers.pub_id
Rechte äußere Verknüpfung Alle Zeilen der zweiten Tabelle (d. h. der "rechten" Tabelle, die in der JOIN-Klausel ganz rechts steht) werden aufgenommen. Zeilen in der links stehenden Tabelle ohne Übereinstimmung werden nicht im Ergebnis angezeigt. Beispielsweise werden bei einer rechten äußeren Verknüpfung der Tabellen titles und publishers alle Herausgeber aufgenommen, auch wenn keine zugehörigen Titel in der Tabelle titles vorhanden sind. Hierfür kann folgende SQL-Anweisung formuliert werden:
SELECT titles.title_id, titles.title, publishers.pub_name FROM titles RIGHT OUTER JOIN publishers ON titles.pub_id = publishers.pub_id
Vollständige äußere Verknüpfung Alle Zeilen aus allen verknüpften Tabellen werden aufgenommen, auch wenn keine Übereinstimmungen vorliegen. Beispielsweise werden bei einer vollständigen äußeren Verknüpfung der Tabellen titles und publishers alle Titel und Herausgeber zurückgegeben, auch wenn keine Übereinstimmung in der jeweils anderen Tabelle vorhanden ist.
SELECT titles.title_id, titles.title, publishers.pub_name FROM titles FULL OUTER JOIN publishers ON titles.pub_id = publishers.pub_id
Hinweis: Einige Datenbanken, z. B. Oracle, unterstützen keine vollständigen äußeren Verknüpfungen.
Kreuzverknüpfung Bei dieser Verknüpfung wird im Resultset für jede mögliche Zeilenkombination aus beiden Tabellen eine Zeile zurückgegeben. Eine Kreuzverknüpfung der Tabelle der Autoren mit der Tabelle der Herausgeber liefert z. B. ein Resultset mit einer Zeile für jede mögliche Kombination aus Autor und Herausgeber. Hierfür kann folgende SQL-Anweisung formuliert werden:
SELECT * FROM authors CROSS JOIN publishers
Siehe auch
Konzepte
Arbeiten mit Daten im Ergebnisbereich