Je voegt twee tabellen in MySQL samen met behulp van de `JOIN`-clausule in een `SELECT`-instructie. Er zijn verschillende soorten joins, elk met een iets ander gedrag:
1. `INNER JOIN` (meest gebruikelijk):
Retourneert alleen rijen als er een overeenkomst is in beide tabellen op basis van de samenvoegingsvoorwaarde. Als er in geen van beide tabellen een overeenkomst is, wordt de rij uitgesloten van het resultaat.
```sql
SELECTEER kolomnamen
VAN tabel1
INNER JOIN tabel2 ON tabel1.kolomnaam =tabel2.kolomnaam;
```
* `table1` en `table2`:de tafels waaraan u wilt deelnemen.
* `column_name`:De kolommen die worden gebruikt om rijen tussen de tabellen te matchen. Deze kolommen moeten compatibele gegevenstypen hebben.
Voorbeeld:
Stel dat u twee tabellen heeft:
* `Klanten`: `KlantID`, `Naam`, `Plaats`
* `Bestellingen`: `OrderID`, `KlantID`, `OrderDatum`, `Totaalbedrag`
Om de klantnaam en bestelgegevens voor alle bestellingen te verkrijgen:
```sql
SELECT Klanten.Naam, Orders.OrderID, Orders.OrderDate, Orders.TotalAmount
VAN Klanten
INNER JOIN Bestellingen OP Klanten.KlantID =Bestellingen.KlantID;
```
Hierdoor worden alleen klanten geretourneerd die bestellingen hebben geplaatst en bestellingen die van bestaande klanten zijn.
2. `LEFT JOIN` (of `LEFT OUTER JOIN`):
Retourneert alle rijen uit de linkertabel (`table1`), zelfs als er geen overeenkomst is in de rechtertabel (`table2`). Als er geen overeenkomst is in de rechtertabel, zullen de kolommen uit de rechtertabel 'NULL'-waarden hebben.
```sql
SELECTEER kolomnamen
VAN tabel1
LINKS JOIN tabel2 AAN tabel1.kolomnaam =tabel2.kolomnaam;
```
Voorbeeld: Om alle klanten en hun bestellingen te ontvangen (inclusief klanten zonder bestellingen):
```sql
SELECT Klanten.Naam, Orders.OrderID, Orders.OrderDate, Orders.TotalAmount
VAN Klanten
LINKS JOIN Bestellingen OP Klanten.KlantID =Bestellingen.KlantID;
```
3. `RIGHT JOIN` (of `RIGHT OUTER JOIN`):
Retourneert alle rijen uit de rechtertabel (`table2`), zelfs als er geen overeenkomst is in de linkertabel (`table1`). Als er geen overeenkomst is in de linkertabel, zullen de kolommen uit de linkertabel 'NULL'-waarden hebben.
```sql
SELECTEER kolomnamen
VAN tabel1
RECHTS JOIN tabel2 AAN tabel1.kolomnaam =tabel2.kolomnaam;
```
Voorbeeld: (Minder gebruikelijk, maar nuttig in specifieke scenario's) Dit is functioneel equivalent aan een `LEFT JOIN` waarbij de tabellen zijn verwisseld.
4. `FULL OUTER JOIN`:
Retourneert alle rijen uit beide tabellen. Als er een overeenkomst is, wordt de bijbehorende rij geretourneerd. Als er geen overeenkomst is in de ene tabel, zullen de kolommen uit de andere tabel 'NULL'-waarden hebben. MySQL ondersteunt `FULL OUTER JOIN` niet direct . Je moet het simuleren met `UNION` van `LEFT JOIN` en `RIGHT JOIN`.
```sql
SELECTEER kolomnamen
VAN tabel1
LINKS JOIN tabel2 AAN tabel1.kolomnaam =tabel2.kolomnaam
UNIE
SELECTEER kolomnamen
VAN tabel1
RECHTS JOIN tabel2 AAN tabel1.kolomnaam =tabel2.kolomnaam;
```
De juiste JOIN kiezen:
De keuze voor het jointype hangt af van de gegevens die u nodig heeft. `INNER JOIN` is de meest voorkomende keuze, maar `LEFT JOIN` en `RIGHT JOIN` zijn cruciaal als u alle rijen uit een van de tabellen wilt behouden. Simuleer 'FULL OUTER JOIN' wanneer u alle rijen uit beide tabellen nodig heeft. Vergeet niet om aliassen (`tabel1`, `tabel2`) te gebruiken voor de duidelijkheid en om dubbelzinnigheid te voorkomen wanneer kolomnamen in beide tabellen hetzelfde zijn. |