# Hoe records opvragen en samenvoegen met MariaDB JOIN

In een relationeel databasebeheersysteem kunt u gegevensrecords in verschillende tabellen met elkaar vergelijken. Hierdoor is het mogelijk om verbanden te leggen en overeenkomende waarden uit twee verschillende tabellen te extraheren. Deze taak wordt in MariaDB uitgevoerd met `JOIN`. De instructie wordt gebruikt in combinatie met `SELECT` en kan worden onderverdeeld in verschillende categorieën. Hieronder gaan we dieper in op `INNER JOIN`, `LEFT OUTER JOIN` en `RIGHT OUTER JOIN`.

## Wat is de syntaxis voor `JOIN`?

Om u te helpen de verschillende `JOIN` in MariaDB te begrijpen, beginnen we met het presenteren van de basissyntaxis van de statement. Hier is de syntaxis voor `INNER JOIN`:

```sql
SELECT column
FROM table_1
INNER JOIN table_2
ON table_1.column = table_2.column;
```

Met `SELECT` geeft u de kolom (of kolommen) op die u wilt opnemen. Vervang de tijdelijke aanduiding ‘table\_1’ door de eerste tabel en ‘table\_2’ door de tweede tabel die u met de eerste wilt samenvoegen. De bewerking `INNER JOIN` **vergelijkt elke rij in de eerste tabel met elke rij in de tweede tabel**. Alleen overeenkomende records (die in beide tabellen voorkomen) worden weergegeven in de resultatentabel. Niet-overeenkomende records worden uit de uitvoer geweerd.

## Hoe gebruik je `INNER JOIN` in MariaDB

Om te laten zien hoe `INNER JOIN` werkt in MariaDB, bekijken we een eenvoudig voorbeeld. We gebruiken een database met twee tabellen. De eerste tabel heet ‘Customer List’ en de tweede ‘Orders’. We kunnen de tabel ‘CustomerList’ maken met [MariaDB CREATE TABLE](https://www.ionos.com/nl-be/digitalguide/hosting/technische-zaken/mariadb-tabel-aanmaken/). Deze tabel bevat de kolommen ‘Customer ID’, ‘LastName’, ‘FirstName’, ‘City’ en ‘CreationDate’. De code ziet er als volgt uit:

```sql
CREATE TABLE CustomerList (
	CustomerID INT PRIMARY KEY,
	LastName VARCHAR(50),
	FirstName VARCHAR(50),
	City VARCHAR(50),
	CreationDate DATE
);
```

Laten we deze tabel nu met enkele waarden vullen. Hiervoor gebruiken we `INSERT INTO`:

```sql
INSERT INTO CustomerList VALUES
(1, 'Smith', 'Martina', 'London', '2022-07-19'),
(2, 'Rodman', 'Daniel', 'Aberdeen', '2023-03-03'),
(3, 'Meyer', 'Peter', 'Cardiff', '2023-07-09'),
(4, 'Garcia', 'Laura', 'Preston', '2023-12-10'),
(5, 'Davis', 'Lisa', 'Bournemouth', '2024-01-17');
```

Vervolgens maken we de tabel ‘Orders’. Deze bevat de kolommen ‘OrderID’, ‘ProductID’, ‘CustomerName’ en ‘OrderDate’. De code ziet er als volgt uit:

```sql
CREATE TABLE Orders (
	OrderID INT AUTO_INCREMENT PRIMARY KEY,
	ProductID INT,
	CustomerName VARCHAR(50),
	OrderDate DATE
);
```

We gaan deze tabel ook vullen met voorbeeldwaarden:

```sql
INSERT INTO Orders VALUES
(101, 247, 'Jackson', '2024-02-20'),
(102, 332, 'Meyer', '2024-03-03'),
(103, 247, 'Anderson', '2024-03-09'),
(104, 191, 'Rodman', '2024-03-17'),
(105, 499, 'Martinez', '2024-03-17');
```

Nu gebruiken we `INNER JOIN` voor MariaDB om te filteren op klanten die **in de klantenlijst voorkomen en een bestelling hebben geplaatst** die in de tabel Orders staat. De bijbehorende code ziet er als volgt uit:

```sql
SELECT CustomerList.CustomerID, CustomerList.LastName, Orders.OrderID, Orders.ProductID
FROM CustomerList
INNER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;
```

In dit voorbeeld richten we ons op de achternaam in de klantenlijst en de klantnaam in de bestellingen. Wanneer deze waarden overeenkomen, worden ze opgenomen in de resultaten. Aangezien de klanten Meyer en Rodman in beide tabellen voorkomen, zou de uitvoer er als volgt uitzien:

<table>
  <thead>
    <tr>
      <th>Klant-ID</th>
      <th>Klantnaam</th>
      <th>Bestelnummer</th>
      <th>Product-ID</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>3</td>
      <td>Meyer</td>
      <td>102</td>
      <td>332</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Rodman</td>
      <td>104</td>
      <td>191</td>
    </tr>
  </tbody>
</table>

## `LEFT OUTER JOIN`

`LEFT OUTER JOIN` in MariaDB werkt volgens een soortgelijk principe en gebruikt ook een vrijwel identieke syntaxis. In tegenstelling tot `INNER JOIN` worden echter **alle gegevensrecords uit de eerste of linkertabel** (in ons voorbeeld ‘CustomerList’) uitgevoerd en alleen de overeenkomende gegevensrecords uit de tweede of rechtertabel (‘orders’). Als er geen equivalent in de tweede tabel is, **wordt** de waarde **gespecificeerd als NULL**. Aan de hand van het bovenstaande voorbeeld ziet de code er als volgt uit:

```sql
SELECT CustomerList.LastName, Orders.ProductID
FROM CustomerList
LEFT OUTER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;
```

Dit levert het volgende resultaat op:

<table>
  <thead>
    <tr>
      <th>Naam klant</th>
      <th>Product-ID</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Smith</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>Rodman</td>
      <td>191</td>
    </tr>
    <tr>
      <td>Meyer</td>
      <td>332</td>
    </tr>
    <tr>
      <td>Garcia</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>Davis</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

## `RIGHT OUTER JOIN`

In MariaDB werkt `RIGHT OUTER JOIN` op de tegenovergestelde manier. Hier **worden gegevens uit de tweede of rechtertabel gecombineerd met overeenkomende waarden uit de eerste of linkertabel**. Als er geen overeenkomst is, is de resulterende waarde NULL. Hieronder staat de code:

```sql
SELECT CustomerList.LastName, Orders.ProductID
FROM CustomerList
RIGHT OUTER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;
```

Dit is hoe de uitvoer eruitziet:

<table>
  <thead>
    <tr>
      <th>Naam klant</th>
      <th>Product-ID</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>NULL</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Meyer</td>
      <td>332</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Rodman</td>
      <td>191</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>499</td>
    </tr>
  </tbody>
</table>

Tip In onze digitale gids vindt u veel nuttige tutorials en artikelen over MariaDB. Zo is er bijvoorbeeld een vergelijking tussen MariaDB en MySQL, een tutorial over het installeren van MariaDB en instructies voor het resetten van uw MariaDB-rootwachtwoord.


This is a markdown version of: [https://www.ionos.com/nl-be/digitalguide/hosting/technische-zaken/mariadb-join/](https://www.ionos.com/nl-be/digitalguide/hosting/technische-zaken/mariadb-join/) for AI/LLM consumption.