SQL Academy · Lektion

Cross Joins und kartesische Produkte

Verwenden Sie CROSS JOIN gezielt für kombinatorische Paarungen und vermeiden Sie versehentliche kartesische Explosionen durch fehlende Join-Schlüssel.

Lektion 1 von 412 Schritte

Cross Joins und kartesische Produkte ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein Cross Join?

Ein CROSS JOIN erzeugt jede Kombination von Zeilen: m × n Ausgabezeilen. Es gibt keine ON-Klausel.

SELECT * FROM a CROSS JOIN b;

-- Equivalent:
SELECT * FROM a, b;        -- comma join, no condition

Versehentliche kartesische Produkte

Der klassische Fehler: Sie vergessen die JOIN-Bedingung und erhalten jede Zeile aus A kombiniert mit jeder Zeile aus B.

SELECT u.email, o.id
FROM users u, orders o;     -- missing WHERE u.id = o.user_id !
-- m users × n orders rows — millions!

Beabsichtigte Anwendungsfälle

CROSS JOIN ist nützlich, wenn Sie tatsächlich alle Paare benötigen:

  • Kombinationen aus Kategorien × Zeiträumen für Berichte mit leeren Zeitintervallen
  • Testdaten: jeder Benutzer × jedes Produkt
  • Kalender: jedes Geschäft × jedes Datum

Beispiel: Kalender × Geschäfte

Füllen Sie für jedes Geschäft Tage mit null Verkäufen auf:

SELECT d.day, s.id, COALESCE(SUM(o.total), 0) AS revenue
FROM generate_series(CURRENT_DATE - 30, CURRENT_DATE, '1 day') AS d(day)
CROSS JOIN stores s
LEFT JOIN orders o ON o.store_id = s.id
                  AND date_trunc('day', o.created_at) = d.day
GROUP BY d.day, s.id
ORDER BY d.day, s.id;

Kartesische Produkte und EXPLAIN

Ein unbeabsichtigtes kartesisches Produkt zeigt sich in EXPLAIN ANALYZE als sehr hohe Zeilenanzahl:

EXPLAIN ANALYZE
SELECT u.email, o.id FROM users u, orders o;
-- Nested Loop  (rows=10000000)  ← warning sign

LATERAL: Bedingter CROSS JOIN

LATERAL JOIN ähnelt einem CROSS JOIN, bei dem die rechte Seite auf die linke Seite verweisen kann – das wird in der nächsten Lektion behandelt.

Permutationen und Kombinationen

Für Paare (A,B) ohne Duplikate fügen Sie eine Vergleichsbedingung in ON ein:

SELECT a.id, b.id
FROM products a
JOIN products b ON a.id < b.id;
-- All unique pairs of products, no (A,A), no (B,A) duplicates of (A,B)

CROSS JOIN mit VALUES

Eine kleine Menge direkt einbetten:

SELECT u.email, c.code
FROM users u
CROSS JOIN (VALUES ('EUR'), ('USD'), ('GBP')) AS c(code);

Komma-Join-Syntax vermeiden

Der implizite Komma-Join (FROM a, b) ist zulässig, verschleiert aber die Absicht. Bevorzugen Sie einen expliziten CROSS JOIN:

-- Don't (looks like a typo):
FROM users, orders

-- Do:
FROM users CROSS JOIN orders

Performance

Der CROSS JOIN selbst ist kostengünstig – es gibt keine Bedingung, die ausgewertet werden muss. Die Kosten entstehen durch die Anzahl der Ausgabezeilen: 10k × 10k = 100M Zeilen.

Zusammenfassung

CROSS JOIN = alle Paare.

  • Verwenden Sie ihn bewusst für Kombinationen
  • Achten Sie auf versehentliche kartesische Produkte (fehlendes WHERE)
  • Kombinieren Sie ihn mit generate_series für Berichte zum Auffüllen fehlender Werte

Kurztest

Sie haben SELECT * FROM users u, orders o; ohne WHERE geschrieben. Wie sieht die Ausgabe aus?

Kostenlos starten

Lerne SQL mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
46
Lektionen
183

Häufig gestellte Fragen

Ist die Lektion „Cross Joins und kartesische Produkte“ kostenlos?

Ja — der vollständige Text von „Cross Joins und kartesische Produkte“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Cross Joins und kartesische Produkte“?

Verwenden Sie CROSS JOIN gezielt für kombinatorische Paarungen und vermeiden Sie versehentliche kartesische Explosionen durch fehlende Join-Schlüssel. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Cross Joins und kartesische Produkte“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Cross Joins und kartesische Produkte
  2. Laterale Joins (LATERAL JOIN)
  3. Anti-Joins und Semi-Joins (NOT EXISTS)
  4. Performance-Tuning für Joins über mehrere Tabellen
← Zurück zu SQL Academy