EMZETT.
Login

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. Mit WHERE bestellung.id IS NULL findet 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 in WHERE.
  • Tempo: Fremdschlüsselspalten indizieren (SQL-Index).

Siehe auch: SQL, Abfragen mit EXPLAIN optimieren