19Zusammenfassung
Häufig muss man Daten aus mehreren Tabellen mit SQL-Abfragen zusammentragen.
Hierfür kann man im FROM-Teil der Abfrage mehrere Tabellen durch ein Komma getrennt angeben:
SELECT *
FROM NUTZER, FILM, angeschaut;
kartesisches Produkt
Ohne weitere Einschränkungen bildet die Abfrage oben das kartesische Produkt aus den Tabellen und kombiniert jeden Eintrag jeder Tabelle mit jedem Eintrag der anderen.
Die Anzahl der Elemente im kartesischen Produkt ist deshalb das Produkt der Anzahlen der Datensätze in den beteiligten Tabellen:
Nutzer: Einträge,
Film: Einträge,
kartesisches Produkt der beiden: Einträge
natürlicher Verbund
Wichtiger für den Alltag ist der natürliche Verbund. Hier werden Fremdschlüssel genutzt, um Paare in den beiden Tabellen zu finden und zusammen zu setzen:
SELECT *
FROM NUTZER, ZAHLUNGSDATEN
WHERE NUTZER.KundenID = ZAHLUNGSDATEN.KundenID
1:n und m:n Beziehungen abfragen
Der einzige Unterschied zwischen den Abfragen für 1:n und m:n-Beziehungen ist die Anzahl der zu verknüpfenden Tabellen. Bei der 1:n-Beziehung müssen, wie im Beispiel direkt darüber, nur zwei Tabellen verknüpft werden. Bei der m:n-Beziehung muss auch die Beziehungstabelle mit verknüpft werden.
SELECT *
FROM angeschaut, NUTZER, FILM
WHERE angeschaut.UserID = NUTZER.UserID
AND angeschaut.FilmID = FILM.FilmID;
Es handelt sich in allen Fällen um ganz normale SQL-Abfragen und alle Befehle und Funktionen können ganz normal verwendet werden.