Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik
Cross & INNER JOIN
Notizen:
Vom Verknüpfen von Tabellen sprechen wir, wenn aus zwei oder mehr an einer Abfrage beteiligten Tabellen Datensätze entnommen werden und diese zu Ausgabedatensätzen zusammengefügt werden. Dabei gibt es selbstverständlich Regeln.
Die Abfrage
SELECT * FROM Tabelle1
liefert die Datensätze der Tabelle1.
Cross JOIN
SELECT * FROM Tabelle1, Tabelle2 bzw.
SELECT Tabelle1.FeldA, Tabelle2.FeldB
FROM Tabelle1, Tabelle2
jede Zeile der einen Tabelle wird mit jeder Zeile der anderen Tabelle kombiniert. Das heißt also, dass der erste Datensatz der Tabelle1 mit allen Datensätzen der Tabelle2 kombiniert wird, und seine Daten dementsprechend of t ausgegeben werden. Allerdings jedes Mal mit einem anderen Datensatz der Tabelle 2 kombiniert! Diese Operation nennt man „Cross JOIN“.
In den diversen Syntaxen werden auch so genannte „Aliasnamen“ für Tabellen erlaubt:
SELECT T1.Feld-A, T2.Feld-B
FROM Tabelle1 AS T1, Tabelle2 AS T2
Die ISO formuliert den Cross JOIN übrigens so:
SELECT T1.Feld-A, T2.Feld-B
FROM Tabelle1 AS T1 CROSS JOIN Tabelle2 AS T2
Der Cross JOIN hat in der Praxis keine Bedeutung. Allerdings könnte man mit einer WHERE-Klausel jene Paare heraus filtern, die „zusammen passen“.
SELECT * FROM Tabelle1, Tabelle2
WHERE Tabelle1.Feld = Tabelle2.anderesFeld
Auf diese Weise gelangt man zum
INNER JOIN
und der kann auch mit der etwas längeren ISO-Syntax (die der Autor grundsätzlich empfiehlt) formuliert werden:
SELECT ...
FROM Tab1 INNER JOIN Tab2 ON Tab1.A = Tab2.B
Die Syntax ... JOIN ... ON ist erst seit SQL-99 unterstützt, wird aber in dieser oder ähnlicher Form von vielen SQL Implementierungen unterstützt
Haben Sie bemerkt? Die Felder, über die ein JOIN hergestellt wird, müssen in den beiden Tabellen nicht gleich heißen!
Was Sie hier nicht direkt ablesen können: sie müssen auch nicht zueinander in Beziehung stehen (Referenzielle Integrität im Datenbankschema ist etwas anderes als Tabellenverknüpfungen via JOIN)
Hinweis: Tabellen können mit JOIN auch "mit sich selbst" verknüpft werden. Dann müssen Aliasnamen verwendet werden
mit JOIN können 2 oder mehr Tabellen verknüpft werden