Tabel met zichzelf Joinen

Op een paar kleine wijzigingen is dit hoofdstuk gekopieerd uit de vorige tutorial

In de voorgaande stukken van de tutorial hebben we telkens een koppeling gemaakt tussen items van 2 of meer verschillende tabellen. Het is echter ook mogelijk om een join te doen binnen eenzelfde tabel. Dit kan in sommige gevallen zeer handig zijn. Het voorbeeld hieronder heeft niets te maken met het voorbeeld van de coureurs en renstallen.

Stel je hebt een tabel, voor een menu. Daarin heb je een ParentId staan bij de verschillende menu items, om aan te geven dat een item onder een bepaald hoofditem valt. Om nu hier de juiste gegevens uit te krijgen kan je een subquery maken, waarmee je de gegevens aan elkaar koppelt, maar het kan ook gemakkelijker: Met een JOIN
Stel de tabel ziet er zo uit:
id (1,2,3,4,5,6,7,8)
naam -> niet opgegeven, is niet direct van belang
parent (NULL,NULL,NULL,3,3,2,1,2)

Dit kan je realiseren door een outer join toe te passen op 1 tabel. Het lijkt allemaal wat raar, omdat je het in eenzelfde tabel doet, maar zo krijg je een keurig overzicht van je menu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT
   hoofdmenu.id,
   submenu.parent
FROM
   menu AS hoofdmenu
RIGHT JOIN
   menu AS submenu
ON
   hoofdmenu.id = submenu.parent


De resultaten zien er dan zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
1    NULL
2    NULL
3    NULL
4    3
5    3
6    2
7    1
8    2


Je krijgt nu keurig een lijstje met de gekoppelde waarden terug. Waarbij je alleen de submenu-items te zien krijgt. Door een JOIN toe te passen op 1 tabel kan je, mits je het juist doet keurig het menu op de juiste volgorde ophalen uit de tabel.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Tabelopbouw
  3. Inner Join
  4. Left Join
  5. Left Join (IS NULL)
  6. Right Join
  7. Right Join (IS NULL)
  8. Outer Join
  9. Outer Join (IS NULL)
  10. Multiple Joins
  11. Tabel met zichzelf Joinen
  12. Tot slot

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.