Voorbereiding op SQL-sollicitatiegesprekken · Les

Het juiste jointype kiezen

Een besliskader om op basis van een vraagstelling de juiste join te kiezen

Les 4 van 413 stappen

Het juiste jointype kiezen is een gratis Voorbereiding op SQL-sollicitatiegesprekken-les op CoddyKit. Dit is les 4 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 Voorbereiding op SQL-sollicitatiegesprekken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

Het join-type kiezen op basis van een vraagstuk

De belangrijkste join-vaardigheid tijdens een sollicitatiegesprek is niet syntaxis, maar een vereiste in gewone taal vertalen naar het juiste jointype. De meeste kandidaten weten hoe elke join werkt, maar blokkeren wanneer ze onder druk een keuze moeten maken.

In deze les krijg je een herhaalbaar besliskader waarmee je binnen enkele seconden het juiste jointype kunt benoemen.

De kernvraag: welke rijen moeten behouden blijven?

Elke keuze voor een join komt neer op één vraag: van welke kant moeten de rijen zonder overeenkomst behouden blijven?

  • Alleen rijen met een overeenkomst aan beide kanten behouden: INNER JOIN.
  • Alle rijen links behouden, met of zonder overeenkomst: LEFT JOIN.
  • Alle rijen van beide kanten behouden: FULL OUTER JOIN.
  • Elke combinatie behouden: CROSS JOIN.

Bepaal eerst wat behouden moet blijven; het jointype volgt dan vanzelf.

Signaalwoorden voor INNER JOIN

Formuleringen als ‘klanten die een bestelling hebben geplaatst’, ‘producten met beoordelingen’ of ‘bestellingen samen met hun klant’ betekenen allemaal dat er aan beide kanten een overeenkomst moet bestaan. Dat is een INNER JOIN.

Als het acceptabel of gewenst is om rijen zonder overeenkomst weg te laten, is een inner join de standaard en efficiëntste keuze.

SELECT c.name, o.order_id
FROM customers c
JOIN orders o ON o.customer_id = c.id;

Signaalwoorden voor LEFT JOIN

Formuleringen als ‘alle klanten, ook klanten zonder bestellingen’ of ‘vermeld elk product en het aantal beoordelingen (nul als er geen zijn)’ betekenen dat je de linkertabel ongeacht overeenkomsten moet behouden. Dat is een LEFT JOIN.

De duidelijke aanwijzingen zijn ‘alle’, ‘ook degenen zonder’ en ‘zelfs als er geen zijn’.

SELECT c.name, COUNT(o.order_id) AS orders
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.name;

Signaalwoorden voor de anti-join

Formuleringen als ‘klanten die nooit een bestelling hebben geplaatst’, ‘producten zonder verkopen’ of ‘werknemers zonder manager’ vragen om rijen die geen overeenkomst hebben. Dit is de anti-join: LEFT JOIN plus WHERE right_key IS NULL (of NOT EXISTS).

De sleutelwoorden zijn ‘nooit’, ‘geen’ en ‘zonder’.

SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.order_id IS NULL;

Signaalwoorden voor FULL OUTER JOIN

Formuleringen als ‘stem twee lijsten op elkaar af en toon vermeldingen die aan een van beide kanten ontbreken’ of ‘vergelijk de rekeningen van vorige maand met die van deze maand en markeer zowel nieuwe als vervallen rekeningen’ vereisen dat rijen zonder overeenkomst uit beide tabellen behouden blijven. Dat is een FULL OUTER JOIN.

Afstemming en problemen waarbij je verschillen moet tonen zijn de typische aanleiding.

SELECT a.id, b.id
FROM last_month a
FULL OUTER JOIN this_month b ON a.id = b.id
WHERE a.id IS NULL OR b.id IS NULL;

Signaalwoorden voor CROSS JOIN

Formuleringen als ‘elke maat in elke kleur’, ‘één rij per winkel per dag, ook als er geen verkopen waren’ of ‘alle mogelijke combinaties’ wijzen op een CROSS JOIN.

De aanwijzing is ‘elke ... in elke’ of ‘alle combinaties’, waarbij er geen overeenkomende voorwaarde tussen de twee verzamelingen bestaat.

SELECT s.size, c.color
FROM sizes s
CROSS JOIN colors c;

Signaalwoorden voor SELF JOIN

Formuleringen waarin een rij wordt gerelateerd aan een andere rij in dezelfde tabel, zoals ‘elke werknemer en diens manager’, ‘paren gebruikers in dezelfde stad’ of ‘dubbele e-mailadressen vinden’, wijzen op een self-join.

De aanwijzing is dat één entiteit naar een andere entiteit van hetzelfde soort verwijst of daarmee wordt vergeleken.

SELECT e.name, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

Een uitgewerkte vertaling

Vraag: ‘Toon elk product en hoe vaak het vorige maand is besteld, ook producten die nooit zijn besteld.’

Ontleed de vraag: ‘elk product’ plus ‘ook nooit besteld’ betekent dat je alle productrijen moet behouden. Gebruik dus een LEFT JOIN van producten naar bestellingen en tel daarna de kant met bestellingen met COUNT (voor producten zonder overeenkomst is dat 0, omdat COUNT NULL negeert).

SELECT p.name, COUNT(o.order_id) AS times_ordered
FROM products p
LEFT JOIN orders o
  ON o.product_id = p.id
 AND o.order_date >= DATE '2024-05-01'
GROUP BY p.id, p.name;

Een veelgemaakte valkuil: filter in ON versus WHERE

In de vorige query staat het datumfilter in de ON-clausule, niet in WHERE. Daardoor blijven producten met nul bestellingen die aan de voorwaarden voldoen behouden.

Als je order_date >= ... naar WHERE verplaatst, worden de NULL-rijen van producten zonder overeenkomst verwijderd. De LEFT JOIN verandert dan ongemerkt in een INNER JOIN, waardoor precies de producten verdwijnen die de vraag wilde behouden.

-- WRONG: WHERE on the outer table removes unmatched products
-- ...
-- LEFT JOIN orders o ON o.product_id = p.id
-- WHERE o.order_date >= '2024-05-01'  <-- becomes an inner join

Het besliskader

Gebruik deze controlelijst voor elk vraagstuk over joins:

  • Is dezelfde tabel aan zichzelf gerelateerd? -> SELF JOIN (en overweeg een recursieve CTE als de diepte onbegrensd is).
  • Elke combinatie, zonder voorwaarde? -> CROSS JOIN.
  • Alleen rijen met een overeenkomst? -> INNER JOIN.
  • Alle rijen van één kant behouden? -> LEFT JOIN.
  • Rijen zonder overeenkomst aan beide kanten behouden? -> FULL OUTER JOIN.
  • Rijen zonder overeenkomst? -> anti-join (LEFT JOIN + IS NULL).

Korte controle

Pas het besliskader toe op een vraagstuk in gewone taal.

Samenvatting: het juiste jointype kiezen

Belangrijkste punten:

  • Begin elke beslissing over een join met de vraag welke rijen zonder overeenkomst behouden moeten blijven.
  • Koppel signaalwoorden: ‘alle/inclusief’ -> LEFT, ‘nooit/geen’ -> anti-join, ‘elke ... in elke’ -> CROSS, ‘elk X en zijn X’ -> SELF, afstemming -> FULL OUTER.
  • Houd filters voor outer joins in de ON-clausule; een filter in WHERE kan een LEFT JOIN ongemerkt degraderen tot een INNER JOIN.
  • Verwoord het besliskader tijdens sollicitatiegesprekken; zo laat je redeneervermogen zien in plaats van uit het hoofd leren.
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
30
Lessen
120

Veelgestelde vragen

Is de les “Het juiste jointype kiezen” gratis?

Ja — de volledige tekst van “Het juiste jointype kiezen” 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 Voorbereiding op SQL-sollicitatiegesprekken wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

Wat leer ik in “Het juiste jointype kiezen”?

Een besliskader om op basis van een vraagstelling de juiste join te kiezen Je oefent met Voorbereiding op SQL-sollicitatiegesprekken 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 Voorbereiding op SQL-sollicitatiegesprekken te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op SQL-sollicitatiegesprekken 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 4 van 4.

Hoe lang duurt de les “Het juiste jointype kiezen”?

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 Voorbereiding op SQL-sollicitatiegesprekken?

Ja. Elke les over Voorbereiding op SQL-sollicitatiegesprekken 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 JOIN en cartesische producten
  2. SELF JOIN voor hiërarchieën
  3. Rijen binnen één tabel vergelijken
  4. Het juiste jointype kiezen
← Terug naar Voorbereiding op SQL-sollicitatiegesprekken