SQL-Joins: Tabellen verknüpfen
Kurz: Ein JOIN verbindet Zeilen aus zwei Tabellen anhand einer Bedingung, meist gleicher Schlüsselwerte. So lassen sich getrennt gespeicherte Daten gemeinsam abfragen.
Genauer: Beispiel: Tabelle kunde(id, name) und bestellung(id, kunde_id, betrag). Mit ON bestellung.kunde_id = kunde.id verknüpft man Bestellungen mit den Namen der Kunden.
Im Detail
- INNER JOIN: Nur Zeilen, zu denen es auf beiden Seiten einen Partner gibt. Kunden ohne Bestellung fehlen.
- LEFT JOIN: Alle Zeilen der linken Tabelle, auch ohne Partner. Fehlende Werte rechts sind
NULL. MitWHERE bestellung.id IS NULLfindet man Kunden ohne Bestellung. - RIGHT JOIN: Das Spiegelbild. Meist schreibt man es als LEFT JOIN mit getauschten Tabellen.
- FULL OUTER JOIN: Alle Zeilen beider Seiten, mit NULL für fehlende Partner.
- CROSS JOIN: Jede Zeile mit jeder (Kreuzprodukt). Vorsicht: n × m Zeilen.
- SELF JOIN: Eine Tabelle mit sich selbst verknüpfen, zum Beispiel Mitarbeitende und ihre Vorgesetzten.
- Fallstricke: Fehlt die Bedingung, entsteht ein Kreuzprodukt. Bei 1:n-Beziehungen vervielfachen sich Zeilen, und Summen werden falsch. Beim LEFT JOIN gehört eine Filterbedingung auf die rechte Tabelle in
ON, nicht inWHERE. - Tempo: Fremdschlüsselspalten indizieren (SQL-Index).
Siehe auch: SQL, Abfragen mit EXPLAIN optimieren