SQL INNER JOIN

Samenvatting: in deze tutorial leert u hoe u gegevens uit meerdere tabellen kunt opvragen met behulp van de SQL INNER JOIN-instructie.

In de vorige tutorial hebt u geleerd hoe u gegevens uit een enkele tabel kunt opvragen met behulp van de SELECT-instructie. U wilt echter vaak gegevens uit meerdere tabellen opvragen om een volledige resultatenset voor analyse te hebben. Om gegevens uit meerdere tabellen op te vragen, gebruikt u join-instructies.

SQL biedt verschillende soorten joins, zoals inner join, outer joins (linksbuiten joins of linksboven, rechts buiten of rechts join, en volledige outer join ) en zelf toetreden. In deze tutorial laten we u zien hoe u de INNER JOIN -clausule gebruikt.

SQL INNER JOIN-syntaxis

Het volgende illustreert INNER JOIN syntaxis voor het samenvoegen van twee tafels:

1
2
3
4
5

SELECTEER
column1, column2
FROM
table_1
INNER JOIN table_2 ON join_condition;

Laten we de bovenstaande syntaxis in meer detail bekijken:

  • De table_1 en table_2 worden samengevoegde tabellen genoemd.
  • Voor elke rij in de table_1 zoekt de zoekopdracht de corresponderende rij in de table_2 die aan de voorwaarden voor samenvoegen voldoet. Als de bijbehorende rij is gevonden, retourneert de query een rij die gegevens uit beide tabellen bevat. Anders wordt de volgende rij in de table_1 onderzocht, en dit proces gaat door totdat alle rijen in de table_1 zijn onderzocht.

Voor het samenvoegen van meer dan twee tabellen, werd dezelfde logica toegepast.

SQL INNER JOIN voorbeelden

SQL INNER JOIN – gegevens opvragen uit twee tabellen voorbeeld

In dit voorbeeld gebruiken we de products en categories tabellen in de voorbeelddatabase. De volgende afbeelding illustreert het databasediagram.

In het bovenstaande diagram:

  • Een categorie kan veel producten bevatten.
  • Eén product behoort tot één en slechts één categorie.

Daarom is er een veel-op-één-relatie tussen de rijen in de categories tabel en rijen in de products tabel. De link tussen de twee tabellen is de categoryid kolom.

We moeten de volgende gegevens uit beide tabellen opvragen:

  • productID, productName van de products tabel.
  • categoryName uit de categories tabel.

Met de volgende query worden gegevens uit beide tabellen opgehaald:

1
2
3
4
5
6

SELECTEER
productID, productName, categoryName
VAN
producten
INNER JOIN
categorieën ON categories.categoryID = products.categoryID;

De join-voorwaarde is gespecificeerd in de INNER JOIN -clausule na het ON -woord als de uitdrukking:

1

categories.categoryID = products.categoryID

Voor elke rij in de products -tabel, vindt de query een overeenkomstige rij in de categories -tabel met dezelfde categoryid. Als er een overeenkomst is tussen twee rijen in beide tabellen, het retourneert een rij die kolommen bevat die zijn gespecificeerd in de SELECT-clausule, dwz product-id, productnaam en categorienaam; anders controleert het de volgende rij in de tabel products om de overeenkomende rij in de tabel categories te vinden. Dit proces gaat door totdat de laatste rij van de producttabel wordt onderzocht.

SQL INNER JOIN – het opvragen van gegevens uit drie tabellen

We kunnen dezelfde technieken gebruiken om drie tabellen samen te voegen.De volgende zoekopdracht selecteert productID, productName, categoryName en supplier uit de products, categories en suppliers tabellen:

1
2
3
4
5
6
7
8
9
10
11

SELECTEER
productID,
productnaam,
categoryName,
companyName AS leverancier
FROM
products
INNER JOIN
categorieën OP categorieën. categoryID = products.categoryID
INNER JOIN
leveranciers OP leveranciers.supplierID = products.supplierID

Impliciete SQL INNER JOIN

Er is een andere vorm van de INNER JOIN genaamd impliciete inner join, zoals hieronder weergegeven:

1
2
3
4
5
6
7

SELECTEER
column1, column2
FROM
table_1,
table_2
WAAR
join_condition;

In dit formulier specificeert u alle samengevoegde tafels in de FROM -clausule en plaats de join-voorwaarde in de WHERE-clausule van de SELECT -instructie. We kunnen het bovenstaande queryvoorbeeld herschrijven met de impliciete INNER JOIN als volgt:

1
2
3
4
5
6
7

SELECTEER
productID, productnaam, categorienaam
VAN
producten,
categorieën
WAAR
products.categoryID = categories.categoryID;

Visualiseer INNER JOIN met Venn-diagram

Write a Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *