ProgrammatieBackend ontwikkelaar

Leg het verschil uit tussen INNER JOIN en OUTER JOIN (LEFT, RIGHT, FULL OUTER JOIN) in SQL, en hoe je het juiste type join kiest in verschillende scenario's voor dataverwerking. Geef een voorbeeld van correct gebruik van elk soort JOIN.

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord

INNER JOIN retourneert alleen die records waarvoor een overeenkomst is gevonden in beide samengevoegde tabellen op basis van de opgegeven voorwaarde. Bij het gebruik van OUTER JOIN (LEFT, RIGHT, FULL) bevat het resultaat alle rijen uit een of beide tabellen, zelfs als er geen overeenkomsten in de andere tabel zijn.

  • LEFT OUTER JOIN: alle rijen van de linker tabel + overeenkomsten van de rechter tabel, indien aanwezig (anders NULL).
  • RIGHT OUTER JOIN: alle rijen van de rechter tabel + overeenkomsten van de linker tabel, indien aanwezig (anders NULL).
  • FULL OUTER JOIN: alle rijen van beide tabellen, waar geen overeenkomst is - tegenovergestelde waarden NULL.

Wanneer welke JOIN te gebruiken:

  • Gebruik INNER JOIN als je alleen overeenkomende rijen nodig hebt.
  • LEFT JOIN - als alle rijen van de eerste (linker) tabel belangrijk zijn, ongeacht de aanwezigheid van een overeenkomst.
  • RIGHT JOIN - op dezelfde manier, maar voor de rechter tabel.
  • FULL OUTER JOIN - een volledige gecombineerde lijst (nuttig voor het zoeken naar verschillen).

Voorbeelden:

-- INNER JOIN SELECT u.id, u.name, o.amount FROM users u INNER JOIN orders o ON u.id = o.user_id; -- LEFT OUTER JOIN SELECT u.id, u.name, o.amount FROM users u LEFT JOIN orders o ON u.id = o.user_id; -- FULL OUTER JOIN SELECT u.id, o.order_id FROM users u FULL OUTER JOIN orders o ON u.id = o.user_id;

Vraag met een valstrik

Wat voor resultaat geeft een LEFT JOIN als de rechter tabel leeg is?

Vaak antwoorden mensen: "LEFT JOIN geeft een leeg resultaat omdat er geen overeenkomsten zijn". Correct: LEFT JOIN retourneert in ieder geval alle rijen uit de linker tabel, en de kolommen uit de rechter zullen NULL zijn.

Voorbeeld:

-- Tabel users heeft records, orders is leeg SELECT u.id, u.name, o.amount FROM users u LEFT JOIN orders o ON u.id=o.user_id; -- Resultaat: alle gebruikers, o.amount = NULL

Voorbeelden van echte fouten door onbekendheid met de nuances van het onderwerp


Verhaal

Een project voor verkoopanalyse. Voor het weergeven van een volledige lijst van klanten en hun bestellingen werd INNER JOIN gebruikt, waardoor klanten zonder bestellingen werden overgeslagen. In het rapport gingen "belangrijke" klanten verloren omdat ze niet in de rechter tabel stonden. Oplossing: gebruik LEFT JOIN.


Verhaal

Een platform voor personeels- en afdelingsadministratie. Het gebruik van RIGHT JOIN in plaats van LEFT JOIN leidde tot verwarring bij het toevoegen van nieuwe afdelingen: sommige medewerkers kwamen niet meer in het rapport voor. Reden - de volgorde van de join was verwisseld.


Verhaal

Migratie van dataskema. Na wijzigingen veranderde een van de JOIN's in een CROSS JOIN door een typefout in de join-voorwaarde. Resultaat - een scherpe stijging van het volume van de selectie en "opblazen" van gegevens. Conclusie: altijd ON aangeven bij joins en zorgvuldig het type JOIN controleren.