SQL Outer Join

Sql Outer Join



Het spreekt voor zich dat joins een van de meest herkenbare kenmerken van relationele databases zijn. Met joins kunnen we de gegevens uit een of meer tabellen combineren op basis van een gerelateerde voorwaarde om zo een samenhangende gegevensbewerking te creëren.

Er zijn verschillende soorten joins in SQL, elk met een unieke manier waarop de gegevens uit de deelnemende tabellen of de resulterende set worden verwerkt. Een van de meest voorkomende typen joins in SQL is een OUTER JOIN.







Een OUTER JOIN in SQL haalt alle overeenkomende rijen uit de betrokken tabellen op, evenals de niet-overeenkomende rijen uit een of beide tabellen. Dit is handig als u te maken heeft met tabellen die NULL-waarden of ontbrekende sets bevatten.



Laten we verder onderzoeken wat deze joins doen, hoe ze werken en hoe we ze in een SQL-database kunnen gebruiken.



Vereisten:

Voor deze tutorial werken we met MySQL 8.0 en gebruiken we de voorbeelddatabase van Sakila. U kunt echter gerust elke andere dataset gebruiken die u van toepassing acht.





Soorten buitenste verbindingen

Er zijn drie hoofdtypen OUTER JOINS in SQL. Deze typen OUTER JOINS omvatten:

  1. Linker BUITENSTE JOINS

  2. In het geval van LEFT OUTER JOINS haalt de join alle rijen uit de linkertabel op en alleen de overeenkomende rijen uit de rechtertabel. Als er geen overeenkomende rijen uit de rechtertabel zijn, retourneert de join de NULL-waarden voor de kolommen in de rechtertabel.



  3. Rechter BUITENVERBINDINGEN

  4. Dit is vergelijkbaar met een RIGHT OUTER JOIN. Het haalt echter alle rijen uit de rechtertabel op, maar alleen de overeenkomende rijen uit de linkertabel. Als er geen overeenkomende rijen uit de linkertabel zijn, bevat de join de NULL-waarden voor de kolommen in de linkertabel.

  5. VOLLEDIGE BUITENVERBINDINGEN

  6. Ten slotte hebben we de FULL OUTER JOINS. Dit type verbinding combineert zowel de RECHTER- als de LINKER-buitenverbindingen. Als gevolg hiervan haalt de join alle rijen op als er een match is in de linker- of rechtertabel. Als er geen overeenkomst is, retourneert de join de NULL-waarden voor de kolommen uit de tabel zonder overeenkomst.

Syntaxis van de SQL OUTER JOIN

Hieronder wordt de syntaxis van een SQL OUTER JOIN weergegeven. Het is echter goed om in gedachten te houden dat de syntaxis enigszins kan variëren, afhankelijk van de doeldatabase-engine.

Het volgende is een algemene structuur:

SELECTEER kolommen
VAN tabel1
[LINKS | RECHTS | FULL] OUTER JOIN tabel2
AAN tabel1.kolomnaam = tabel2.kolomnaam;

De syntaxis van een OUTER JOIN in SQL spreekt voor zich.

Voorbeelden:

Laten we eens kijken naar een voorbeeld van hoe we de verschillende soorten OUTER JOINS in SQL kunnen toepassen.

Zoals we al zeiden, zullen we de voorbeelddatabase van Sakila gebruiken voor demonstratie. In dit geval gebruiken we de tabellen ‘klant’ en ‘betaling’.

Voorbeeld 1: LINKS BUITEN JOIN

Laten we beginnen met een OUTER JOIN. Stel dat we alle klantgegevens willen ophalen, samen met hun betalingsgegevens, indien beschikbaar.

Hierdoor is een LEFT OUTER JOIN van toepassing omdat we alle klantinformatie (links) en betalingsinformatie willen, indien beschikbaar (rechts).

Als de klant geen betaling heeft gedaan, toont de join de NULL-waarden voor de betalingsgerelateerde kolommen.

Een voorbeeld is als volgt:

SELECTEER
c.klant_id,
c.voornaam,
c.achternaam,
p.bedrag,
p.betalingsdatum
VAN
klant c
LINKS BUITEN JOIN betaling p
OP
c.klant_id = p.klant_id;

In de gegeven zoekopdracht nemen we de kolommen ‘klant_id’, ‘voornaam’ en ‘achternaam’ op uit de tabel ‘klant’. We nemen ook het bedrag en de 'betalingsdatum' uit de tabel 'betaling' op.

Vervolgens voeren we een LEFT OUTER JOIN uit tussen de tabellen “klant” en “betaling” op basis van de “klant_id”.

Dit zijn alle klanten (al dan niet betaald) samen met hun betalingsgegevens (indien aanwezig).

Een voorbeelduitvoer is als volgt:

Voorbeeld 2: RECHTS OUTER JOIN

Laten we nu verder gaan met de RIGHT OUTER JOIN. Stel dat wij in dit geval alle betaalgegevens en de eventuele bijbehorende klant willen vermelden.

Als in dit geval een betaling door een klant wordt gedaan, worden in de join de gegevens van die klant weergegeven. Als er een betaling is zonder gekoppelde klant, worden de NULL-waarden weergegeven voor klantgerelateerde kolommen.

SELECTEER
c.klant_id,
c.voornaam,
c.achternaam,
p.bedrag,
p.betalingsdatum
VAN
klant c
RECHTS OUTER JOIN betaling p
OP
c.klant_id = p.klant_id;

De resulterende set is als volgt:

Voorbeeld 3: VOLLEDIGE OUTER JOIN

Een FULL OUTER JOIN haalt daarentegen alle klantinformatie en betaling op. Dit omvat alle klanten en alle betalingen en toont de NULL-waarden waar er geen match is tussen de tabellen.

SELECTEER
c.klant_id,
c.voornaam,
c.achternaam,
p.bedrag,
p.betalingsdatum
VAN
klant c
VOLLEDIGE OUTER JOIN betaling p
OP
c.klant_id = p.klant_id;

Het is goed om in gedachten te houden dat MySQL niet standaard een FULL OUTER JOIN ondersteunt. Je moet wat jiujitsu-magie doen met de LEFT JOIN, UNION en RIGHT JOIN. Best vervelend, zouden we kunnen toevoegen.

Conclusie

In deze tutorial hebben we alles geleerd over OUTER JOINS. We hebben geleerd wat een OUTER JOIN is in SQL, de typen OUTER JOINS en de voorbeelden van hoe u deze typen OUTER JOINS kunt gebruiken.