Binnen 1 tabel
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:
2
3
4
5
6
7
8
hoofdmenu.id, submenu.parent
FROM
menu AS hoofdmenu
OUTER JOIN
menu AS submenu
ON
hoofdmenu.id = submenu.parent
Resultaat:
Child -> Parent
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.