Verbindungen
Verbindungen oder auch Joins verwendet man, um andere Tabellen in einer Tabelle zu verknüpfen.
Die Standardverknüpfung ist ein INNER JOIN.
Dabei werden alle Daten aus der übergeordneten Tabelle angezeigt, die auch einen Datensatz in der Untertabelle haben.
FROM Tabelle INNER JOIN Tabelle2 ON Tabelle.Feld = Tabelle2.Feld
Bei mehreren Tabellen kommen alle weiteren Tabellen dazwischen
FROM Tabelle1 INNER JOIN (Tabelle2 ON Tabelle1.ID = Tabelle2.ID) INNER JOIN (Tabelle3 ON Tabelle3.ID = Tabelle2.ID)
Oder auch in eigene Klammern, wenn zB die 2. Tabelle mit der 3. Tabelle verknüpft ist etc.
Neben den INNER JOIN's gibt es auch noch LEFT und RIGHT JOIN.
Mit diesen Verbindungen wird nicht die Schnittmenge einer Abfrage gebildet, sondern es werden auch Datensätze angezeigt, die keine Unter- Überdatensätze haben.
Die Felder in der Abfrage bleiben dann leer!
Als Beispiel:
Man hat eine Tabelle mit Artikel und eine Tabelle mit Kunden.
Wenn man die Tabelle mit einem INNER JOIN verknüpft, dann würden nur die Artikel angezeigt, die auch mindestens einmal gekauft worden sind.
Wenn man nun auf einen LEFT JOIN umstellt, dann werden alle Artikel angezeigt.
SELECT * FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.KundenID = Tabelle2.KundenID
Neben diesen 3 häufig gebrauchten Verbindungen gibt es auch noch die Theta Joins:
FROM Tabelle INNER JOIN Tabelle2 ON Tabelle.ID <= Tabelle2.ID
Bei einem normalen INNER JOIN wird der gleiche Wert gesucht hier kann man <, > verwenden.
Eine weitere Verbindung stellen UNIONabfragen dar. Hier kann man Werte aus 2 Tabellen völlig frei verbinden.
Allerdings sind diese mitunter sehr langsam. Für ein UNION muss jede Abfrage die gleiche Anzahl an Feldern haben:
SELECT Tabelle1.Feld1, Tabelle1.Feld2, Tabelle1.Feld3 FROM Tabelle1 UNION SELECT Tabelle2.Feld1, Tabelle2.Feld2, Tabelle2.Feld3 FROMTabelle2