Mit JOIN verbindest du Tabellen in einer Abfrage. INNER JOIN liefert nur passende Paare. LEFT JOIN behält alle Zeilen der linken Tabelle, auch ohne Treffer (mit NULL auf der rechten Seite). Die Verknüpfung steht in ON. Mit Tabellen-Aliassen (n, b) werden Abfragen kürzer.
Typischer Trick: LEFT JOIN ... WHERE rechts.id IS NULL findet Zeilen ohne Gegenstück.
SELECT n.name, b.betrag
FROM nutzer n
INNER JOIN bestellung b ON b.nutzer_id = n.id;
-- alle Nutzer, auch ohne Bestellung
SELECT n.name, COUNT(b.id) AS bestellungen
FROM nutzer n
LEFT JOIN bestellung b ON b.nutzer_id = n.id
GROUP BY n.id, n.name;
-- Nutzer ohne Bestellung
SELECT n.name FROM nutzer n
LEFT JOIN bestellung b ON b.nutzer_id = n.id
WHERE b.id IS NULL;Merke
INNER JOINnur Treffer,LEFT JOINalle linksVerknüpfung in
ONAliasse verkürzen Abfragen
Aufgabe
Liste alle Autoren mit der Zahl ihrer Bücher, auch Autoren ohne Buch.