SQL Academy · Les

Cross joins en Cartesische producten

Gebruik CROSS JOIN bewust voor combinatorische koppelingen en voorkom onbedoelde Cartesische explosies door ontbrekende joinkeys.

Les 1 van 412 stappen

Cross joins en Cartesische producten is een gratis SQL Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject SQL Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus SQL Academy bevat in totaal 4 lessen.

Wat is een CROSS JOIN?

Een CROSS JOIN produceert elke combinatie van rijen: m × n uitvoerrijen. Er is geen ON-component.

SELECT * FROM a CROSS JOIN b;

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

Onbedoelde cartesische producten

De klassieke fout: je vergeet de JOIN-voorwaarde en krijgt elke rij van A gekoppeld aan elke rij van B.

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

Beoogde gebruikssituaties

CROSS JOIN is nuttig als je daadwerkelijk alle paren wilt:

  • Combinaties van categorieën × perioden voor rapporten met lege vakken
  • Testgegevens: elke gebruiker × elk product
  • Kalenders: elke winkel × elke datum

Voorbeeld met kalender × winkels

Vul dagen met nul in voor elke winkel:

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;

Cartesische producten en EXPLAIN

Een onbedoeld cartesisch product verschijnt als een enorm aantal rijen in EXPLAIN ANALYZE:

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

LATERAL: voorwaardelijke CROSS JOIN

LATERAL JOIN lijkt op een CROSS JOIN waarbij de rechterkant naar de linkerkant kan verwijzen — dit wordt in de volgende les behandeld.

Permutaties en combinaties

Voeg voor paren (A,B) zonder duplicaten een vergelijking toe aan de ON-component:

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 met VALUES

Voeg een kleine verzameling inline toe:

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

Komma-JOIN-syntaxis vermijden

De impliciete komma-JOIN (FROM a, b) is geldig, maar verbergt de bedoeling. Gebruik liever een expliciete CROSS JOIN:

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

-- Do:
FROM users CROSS JOIN orders

Prestaties

CROSS JOIN zelf is goedkoop — er is geen voorwaarde om te evalueren. De kosten zitten in het aantal uitvoerrijen: 10k × 10k = 100M rijen.

Samenvatting

CROSS JOIN = alle paren.

  • Gebruik het bewust voor combinaties
  • Let op onbedoelde cartesische producten (ontbrekende WHERE)
  • Combineer het met generate_series voor rapporten waarin ontbrekende waarden worden aangevuld

Korte controle

Je hebt SELECT * FROM users u, orders o; geschreven zonder WHERE. Wat is de uitvoer?

Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
46
Lessen
183

Veelgestelde vragen

Is de les “Cross joins en Cartesische producten” gratis?

Ja — de volledige tekst van “Cross joins en Cartesische producten” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus SQL Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus SQL Academy bevat in totaal 4 lessen.

Wat leer ik in “Cross joins en Cartesische producten”?

Gebruik CROSS JOIN bewust voor combinatorische koppelingen en voorkom onbedoelde Cartesische explosies door ontbrekende joinkeys. Je oefent met SQL Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met SQL Academy te beginnen?

Ervaring vooraf is niet nodig. SQL Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Cross joins en Cartesische producten”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over SQL Academy?

Ja. Elke les over SQL Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Cross joins en Cartesische producten
  2. Lateral joins (LATERAL JOIN)
  3. Anti-joins en semi-joins (NOT EXISTS)
  4. Prestaties van joins met meerdere tabellen optimaliseren
← Terug naar SQL Academy