JOINs in SQL Server: typen met voorbeelden
⚡ Slimme samenvatting
In SQL Server combineert een JOIN rijen uit twee of meer tabellen op basis van een gerelateerde kolom. Hierbij worden INNER, LEFT OUTER, RIGHT OUTER en FULL OUTER JOINs gebruikt om te bepalen welke overeenkomende en niet-overeenkomende rijen in het resultaat verschijnen.

Wat zijn joins in SQL Server?
Met behulp van de JOIN-instructie kunnen gegevens uit meerdere tabellen worden opgehaald. SQL ServerEen JOIN combineert rijen uit twee of meer tabellen op basis van een gerelateerde kolom ertussen, meestal een hoofdsleutel afgestemd op een vreemde sleutelEr zijn hoofdzakelijk vier soorten JOINs in SQL Server:
- INNER JOIN / eenvoudige join
- LINKER OUTER JOIN / LINKER JOIN
- RECHTS BUITEN JOIN / RECHTS JOIN
- VOLLEDIGE OUTER JOIN
De onderstaande tabel geeft een overzicht van de rijen die elk JOIN-type retourneert:
| JOIN-type | Geretourneerde rijen |
| INNER JOIN | Alleen rijen waar de koppelingsvoorwaarde in beide tabellen overeenkomt. |
| LINKER BUITENSTE JOIN | Alle rijen uit de linkertabel, plus overeenkomende rijen uit de rechtertabel (NULL-waarden waar geen overeenkomst is). |
| RECHTS BUITENSTE JOIN | Alle rijen uit de rechtertabel, plus overeenkomende rijen uit de linkertabel (NULL-waarden waar geen overeenkomst is). |
| VOLLEDIGE OUTER JOIN | Alle rijen uit beide tabellen, met NULL-waarden waar niet aan de voorwaarde is voldaan. |
De onderstaande voorbeelden gebruiken twee tafelsStudenten en collegegeld, gekoppeld op basis van hun gemeenschappelijke kolom voor toelating. Elke sectie legt één JOIN-type uit met de bijbehorende syntaxis, een uitgewerkte query en het resultaat.
INNER JOIN
Dit soort SQL Server JOIN retourneert rijen uit alle tabellen waarin de joinvoorwaarde waar is. De syntaxis is als volgt:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
We zullen de volgende twee tabellen gebruiken om dit te illustreren. De onderstaande tabel 'Studenten' geeft een overzicht van elke student en het bijbehorende inschrijvingsnummer:
De onderstaande tabel toont het bedrag dat elk toegangsnummer heeft betaald:
De volgende opdracht demonstreert een INNER JOIN in SQL Server aan de hand van een voorbeeld:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Het commando geeft het volgende resultaat terug, waarbij alleen de toelatingsnummers worden weergegeven die in beide tabellen voorkomen:
We kunnen zien welke studenten hun collegegeld hebben betaald. We hebben de kolom met de gemeenschappelijke waarden in beide tabellen gebruikt, namelijk de kolom met toelatingsgegevens.
LINKER BUITENSTE JOIN
Dit type join retourneert alle rijen uit de linkertabel plus de records in de rechtertabel met overeenkomende waarden. Bijvoorbeeld:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
De code geeft het volgende resultaat terug, keeping elke student, zelfs als er geen overeenkomend betalingsbewijs is:
De records zonder overeenkomende waarden worden vervangen door NULL's in de respectieve kolommen.
RECHTS BUITENSTE JOIN
Dit type join retourneert alle rijen uit de rechtertabel en alleen de rijen met overeenkomende waarden in de linkertabel. Bijvoorbeeld:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
De OUTER JOIN-instructie in SQL Server levert het volgende resultaat op:
De reden voor de bovenstaande uitvoer is dat alle rijen in de Tarieftabel beschikbaar zijn in de Studententabel wanneer ze overeenkomen met de toelatingskolom.
VOLLEDIGE OUTER JOIN
Dit type join retourneert alle rijen uit beide tabellen, met NULL-waarden waar de JOIN-voorwaarde niet waar is. Bijvoorbeeld:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
De code geeft het volgende resultaat voor FULL OUTER JOIN-query's in SQLwaarbij elke rij uit beide tabellen wordt gecombineerd:






