Syntax-Beispiel
SELECT order_items.id, orders.order_date, order_items.price
FROM order_items
LEFT OUTER JOIN orders
ON order_items.order_id = orders.id;
Joins kombinieren Zeilen aus zwei oder mehr Tabellen basierend auf einer verknüpften Spalte zwischen ihnen.
Visualisierung von Joins
SELECT * FROM `A` INNER JOIN `B`
┌────────┐
│ A ┌───┼────┐
│ │ ∩ │ │
└────┼───┘ B │
└────────┘
| Join-Typ | Enthaltene Daten | Beschreibung |
|---|---|---|
INNER JOIN |
∩ |
Gibt Datensätze mit übereinstimmenden Werten in beiden Tabellen zurück |
LEFT OUTER JOIN |
A + ∩ |
Gibt alle Datensätze aus Tabelle A und passende aus Tabelle B zurück |
RIGHT OUTER JOIN |
∩ + B |
Gibt alle Datensätze aus Tabelle B und passende aus Tabelle A zurück |
FULL OUTER JOIN |
A + ∩ + B |
Gibt alle Datensätze zurück, sobald links oder rechts eine Übereinstimmung existiert |
Join-Varianten und Filter
Left Join ohne Schnittmenge
SELECT * FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL;
Right Join ohne Schnittmenge
SELECT * FROM A
RIGHT JOIN B ON A.key = B.key
WHERE A.key IS NULL;
Full Outer Join ohne Schnittmenge
SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key
WHERE A.key IS NULL OR B.key IS NULL;