Kodokon kodokon.com

INNER JOIN: zwei Tabellen verbinden

Verknüpfe Daten aus zwei Tabellen mit INNER JOIN, lesbaren Aliassen und einer präzisen Join-Bedingung.

7 Min. · 3 Fragen

Diese Lektion in Kodokon öffnen

Eine 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.

SQL
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');
Start-Skript: Führe es vor den folgenden Beispielen aus.

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.

SQL
SELECT customers.name, orders.amount
FROM orders
INNER JOIN customers
  ON customers.id = orders.customer_id;
Jede Bestellung zusammen mit dem Namen ihres Kunden.

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.

SQL
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;
Kurze Aliasse, ein Filter und eine Sortierung: eine typische professionelle Abfrage.

Wissenscheck

Stelle sicher, dass du die wichtigsten Punkte dieser Lektion behalten hast.

  1. Welches Schlüsselwort leitet in einem Join die Übereinstimmungsbedingung zwischen den beiden Tabellen ein?
    • WHERE
    • ON
    • HAVING
    • MATCH
  2. Was passiert bei einem INNER JOIN zwischen customers und orders mit einem Kunden, der keine Bestellungen hat?
    • Er erscheint mit NULL-Spalten
    • Er fehlt im Ergebnis
    • Die Abfrage schlägt fehl
  3. Warum sollte man in einer Abfrage, die customers und orders verbindet, c.id statt id schreiben?
    • Um die Ausführung der Abfrage zu beschleunigen
    • Weil id in beiden Tabellen existiert und mehrdeutig wäre
    • Weil SQLite es für jede Spalte verlangt