logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

PHP-lessen - les 3.6 - Werken met MySQL-databases. Typen van de JOIN-operator.

09/10/2025, by Ivan

In MySQL kun je gegevens selecteren met behulp van JOIN op verschillende manieren. We zullen proberen al deze soorten queries te bekijken. Hier is de lijst met alle JOIN-querytypen:

  1. INNER JOIN
  2. LEFT JOIN
  3. LEFT JOIN zonder overlapping met de rechtertabel
  4. RIGHT JOIN
  5. RIGHT JOIN zonder overlapping met de linkertabel
  6. FULL OUTER
  7. FULL OUTER waarbij de linker- of rechtertabel leeg is

 

Hier is een illustratie van deze soorten JOIN:

SQL

Ik zal aan het artikel bestanden van onze site toevoegen, waaronder join.php, waarin ik alle records zal weergeven met behulp van verschillende JOIN-operatoren.

INNER JOIN

We beginnen met de INNER JOIN-operator, omdat deze standaard wordt gebruikt als je in de query gewoon JOIN schrijft. Deze operator selecteert alle records uit twee tabellen waar de voorwaarde na de ON-operator wordt vervuld. We hebben twee tabellen: Files en Messages:

Tabel Messages:

mid bodytext fid
1 Test NULL
2 Hi 2
3 Hello NULL

 Tabel Files:

fid path
1 /files/1.png
2 /files/2.png
3 /files/3.png

De query met JOIN ziet er als volgt uit:

SELECT * FROM Messages INNER JOIN Files ON Messages.fid=Files.fid

Het resultaat zal de volgende records weergeven:

mid bodytext fid path
2 Hi 2 /files/2.png

Met andere woorden, waar de fid’s overeenkomen, toont MySQL deze rijen.

LEFT JOIN

Met LEFT JOIN halen we alle records op uit de linkertabel (in ons geval Messages), inclusief de records waarvan de fid-waarden voorkomen in de tabel Files.

Tabel Messages:

mid bodytext fid
1 Test 2
2 Hi NULL
3 Hello 3

 Tabel Files:

fid path
1 /files/1.png
2 /files/2.png
3 /files/3.png

De query met LEFT JOIN ziet er zo uit:

SELECT * FROM Messages LEFT JOIN Files ON Messages.fid=Files.fid

Het resultaat zal de volgende records weergeven:

mid bodytext fid path
1 Test 2 /files/2.png
2 Hi NULL NULL
3 Hello 3 /files/3.png

LEFT JOIN is handig wanneer we alle berichten willen tonen, ongeacht of er een bestand is gekoppeld of niet — dat kunnen we later in PHP controleren.

LEFT JOIN zonder overlapping met de rechtertabel

LEFT JOIN zonder overlapping toont alle records uit de linkertabel, behalve die waarvan fid ook voorkomt in de rechtertabel.

Tabel Messages:

mid bodytext fid
1 Test 2
2 Hi NULL
3 Hello 3

 Tabel Files:

fid path
1 /files/1.png
2 /files/2.png
3 /files/3.png

De query zonder overlapping ziet er zo uit:

SELECT * FROM Messages LEFT JOIN Files ON Messages.fid=Files.fid WHERE Files.fid IS NULL

Het resultaat van deze selectie is:

mid bodytext fid path
2 Hi NULL NULL

LEFT JOIN zonder overlapping is nuttig wanneer we alle berichten zonder bijgevoegde bestanden willen tonen.

RIGHT JOIN

RIGHT JOIN toont alle records uit de rechtertabel, en als er overeenkomsten zijn, worden ook de bijbehorende gegevens uit de linkertabel getoond.

Tabel Messages:

mid bodytext fid
1 Test 2
2 Hi NULL
3 Hello 3

 Tabel Files:

fid path
1 /files/1.png
2 /files/2.png
3 /files/3.png

De query met RIGHT JOIN:

SELECT * FROM Messages RIGHT JOIN Files ON Messages.fid=Files.fid

Het resultaat van deze query is:

mid bodytext fid path
NULL NULL 1 /files/1.png
1 Test 2 /files/2.png
3 Hello 3 /files/3.png

RIGHT JOIN is handig wanneer we alle bestanden willen weergeven, ongeacht of ze ergens gebruikt worden of niet — gewoon alle bestanden.

RIGHT JOIN zonder overlapping

RIGHT JOIN zonder overlapping toont alle records uit de rechtertabel, behalve die waarvoor er een overeenkomst is met de linkertabel.

Tabel Messages: