Voeg drie tabellen samen in SQL

Voeg Drie Tabellen Samen In Sql



In relationele databases is het ophalen van gegevens uit meerdere tabellen zeer gebruikelijk. Afhankelijk van het doelresultaat houdt dit in dat meerdere tabellen tot één eenheid worden samengevoegd en de resulterende gegevens worden opgehaald.

Als het om joins gaat, werken de meesten van ons voornamelijk met de limiet van twee tabellen en dergelijke. Het is echter gebruikelijk dat drie tabellen moeten worden samengevoegd om een ​​betekenisvollere gegevensindeling en inzicht te krijgen. Neem bijvoorbeeld waar u een lijst met films, de bijbehorende huurinventaris en de feitelijke huurgegevens wilt ophalen. Elk van deze eenheden, zoals films, inventaris en huurgegevens, staat in afzonderlijke tabellen.

In deze zelfstudie leiden we u door de verschillende joins en technieken die u kunt gebruiken om drie tabellen in SQL samen te voegen.







Vereisten:

Voor demonstratiedoeleinden gebruiken we MySQL versie 80 en de voorbeelddatabase van Sakila. Om mee te gaan, kunt u de Sakila-database downloaden en instellen op uw MySQL-server. Voel je vrij om elke andere dataset te gebruiken die je van toepassing acht.



Soorten joins in SQL

Voordat we overgaan tot de toepassing van de joins, moeten we eerst de verschillende soorten joins bespreken die beschikbaar zijn in SQL-databases.



BINNENSTE VERBINDING

Het eerste type join is een INNER JOIN. Dit type join retourneert alleen de rijen die in beide tabellen een overeenkomende waarde bevatten. Het is een veel voorkomend type join en het meest simplistisch bij het samenvoegen van twee tabellen.





De syntaxis is als volgt:

SELECTEER kolommen

VAN tabel1

INNER JOIN-tabel2 OP tabel1.kolomnaam = tabel2.kolomnaam;

LINKS AANMELDEN

In het geval van een LEFT JOIN worden alle rijen uit de linkertabel en de overeenkomende rijen uit de rechtertabel geretourneerd. Als er geen overeenkomende waarden uit de rechtertabel zijn, voegt de join de NULL-waarden op hun plaats toe.



De syntaxis is als volgt:

SELECTEER kolommen

VAN tabel1

LINKS JOIN tabel2 OP tabel1.kolomnaam = tabel2.kolomnaam;

RECHTS MOETEN

Zoals je kunt raden, is de RIGHT JOIN het tegenovergestelde van de LEFT JOIN. Dit type joins retourneert alle rijen uit de rechtertabel en alleen de overeenkomende rijen uit de linkertabel. Als er geen overeenkomende rijen in de linkertabel staan, voegt de join de NULL-waarden eraan toe.

Het volgende is de syntaxis van een RIGHT JOIN:

SELECTEER kolommen

VAN tabel1

RIGHT JOIN tabel2 OP tabel1.kolomnaam = tabel2.kolomnaam;

VOLLEDIGE BUITENKOM

Het volgende type join dat je tegenkomt in SQL-databases is een FULL OUTER JOIN. Dit type join retourneert alle rijen als er een overeenkomst is in de rechter- of linkertabel. Als er geen overeenkomende waarde is in een van de twee, retourneert het NULL voor de kolommen uit de tabel zonder de overeenkomst.

Hieronder wordt de syntaxis van een FULL OUTER JOIN gedemonstreerd:

SELECTEER kolommen

VAN tabel1

VOLLEDIGE BUITENKOMMEN tabel2 OP tabel1.kolomnaam = tabel2.kolomnaam;

Het is goed om in gedachten te houden dat niet alle database-engines de FULL OUTER JOINS ondersteunen. Om dit te bereiken moet u mogelijk met andere typen JOINS of subquery's werken.

Voorbeelden:

Laten we enkele voorbeelden bekijken van hoe we dit soort joins kunnen gebruiken om drie tabellen in SQL samen te voegen.

Voorbeeld 1: Het gebruik van INNER JOIN

We beginnen met een INNER JOIN. Stel dat we een lijst met films, de huurinventaris en de bijbehorende huurgegevens willen ophalen.

We kunnen meerdere INNER JOINS gebruiken voor de bijbehorende tabellen, zoals weergegeven in het volgende voorbeeld:

SELECTEER

film titel,

inventaris.inventaris_id,

verhuur.huur_datum

VAN

film

INNER JOIN-inventaris OP

film.film_id = inventaris.film_id

INNER JOIN verhuur OP

inventaris.inventaris_id = huur.inventaris_id;

In de gegeven voorbeeldquery beginnen we met het samenvoegen van de film- en inventaristabellen op basis van de kolom 'film_id'. Vervolgens nemen we de resulterende set en voegen deze samen met de huurtabel op basis van de kolom 'inventaris_id'.

Dit zorgt ervoor dat we drie tafels aan elkaar koppelen met een basis INNER JOIN. De resulterende set is als volgt:

Voorbeeld 2: Gebruik van INNER JOIN en LEFT JOIN

Laten we zeggen dat we nu de lijst met films willen, de lijst met huurinventarissen (als die er zijn) en de bijbehorende huurgegevens.

We willen er ook voor zorgen dat zelfs als een film geen verhuurinventaris heeft, we deze toch in het resultaat opnemen. Dit is waar de INNER JOIN en LEFT JOIN in het spel komen.

Beschouw het volgende voorbeeld:

SELECTEER

film titel,

inventaris.inventaris_id,

verhuur.huur_datum

VAN

film

INNER JOIN-inventaris OP

film.film_id = inventaris.film_id

LINKS JOIN verhuur OP

inventaris.inventaris_id = huur.inventaris_id;

In dit voorbeeld gebruiken we een INNER JOIN om de film- en inventaristabel samen te voegen om ervoor te zorgen dat we de titels krijgen met de beschikbare inventaris. Vervolgens gebruiken we LEFT JOIN om deel te nemen aan de huurtabel om de huurgegevens op te halen, indien beschikbaar, en NULL voor titels die geen huurgeschiedenis hebben.

De resulterende set is als volgt:

Conclusie

In deze zelfstudie leerden we over de verschillende typen JOINS in SQL, hoe ze werken en hoe we ze kunnen gebruiken om drie tabellen te combineren.