Verknüpfe Daten aus zwei Tabellen mit INNER JOIN, lesbaren Aliassen und einer präzisen Join-Bedingung.
Diese Lektion in Kodokon öffnenEine echte Datenbank speichert nie alles in einer einzigen Tabelle: die Kundschaft auf der einen Seite, ihre Bestellungen auf der anderen. Um dieses Modul zu üben, öffne sqliteonline.com in deinem Browser (keine Installation nötig) oder starte das Werkzeug sqlite3 in einem Terminal. Füge zuerst das folgende Skript ein: Es erstellt die beiden Tabellen, die in dieser Lektion verwendet werden.
CREATE TABLE customers (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
city TEXT
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer_id INTEGER NOT NULL,
amount REAL NOT NULL,
ordered_at TEXT NOT NULL
);
INSERT INTO customers (id, name, city) VALUES
(1, 'Alice', 'Lyon'),
(2, 'Karim', 'Paris'),
(3, 'Mina', 'Nantes');
INSERT INTO orders
(id, customer_id, amount, ordered_at)
VALUES
(1, 1, 49.90, '2026-06-01'),
(2, 1, 15.00, '2026-06-12'),
(3, 2, 120.50, '2026-06-15');INNER JOIN fügt zwei Tabellen Zeile für Zeile anhand einer Übereinstimmungsbedingung zusammen, die nach ON steht. Hier wird jede Bestellung mit dem Kunden verknüpft, dessen id gleich ihrer customer_id ist. Zeilen ohne Übereinstimmung fallen aus dem Ergebnis: Mina, die nichts bestellt hat, taucht nicht auf.
SELECT customers.name, orders.amount
FROM orders
INNER JOIN customers
ON customers.id = orders.customer_id;Die vollständigen Tabellennamen ständig zu wiederholen, wird schnell unleserlich. Ein Alias, das mit AS deklariert wird, benennt die Tabelle für die Dauer der Abfrage um. Setze mehrdeutigen Spalten immer ein Präfix voran: id existiert in beiden Tabellen, schreib also c.id oder o.id, niemals id allein.
SELECT c.name, o.amount, o.ordered_at
FROM orders AS o
INNER JOIN customers AS c
ON c.id = o.customer_id
WHERE o.amount > 20
ORDER BY o.amount DESC;