Self join

Het is mogelijk een tabel met zichzelf te joinen door twee aliassen te gebruiken voor dezelfde tabel. De database denkt dan dat er twee tabellen zijn. In de tabel employees staat bij manager_id wie de manager is van de employee. Dat nummer bij manager_id verwijst naar het employee_id.

 

Je ziet dat King geen manager_id heeft, hij is de hoogste baas.

Kochar heeft als manager_id 100 en dat is dus King.

Hunold heeft als manager_id 102 en dat is dus De Haan.

et cetera

 

clip0146

 

Als je een alias gaat kiezen, moet je een duidelijke naam nemen. In dit geval hebben we worker voor de werknemers gekozen en manager voor de managers. We kunnen nu een overzicht maken met de werknemers en hun managers.

 

SELECT worker.last_name, worker.manager_id, manager.last_name AS manager_name

FROM employees worker JOIN employees manager

 ON worker.manager_id = manager.employee_id;

 

clip0147

 

 

En als je daar KING bij wil hebben, maak je er een LEFT JOIN van.

 

SELECT worker.last_name, worker.manager_id, manager.last_name AS manager_name

FROM employees worker LEFT JOIN employees manager

 ON worker.manager_id = manager.employee_id;

 

clip0148

 

De SELF JOIN komt sporadisch voor en is dus niet erg belangrijk. In de database die wij gebruiken is er slechts één SELF-JOIN te maken en die staat hierboven uitgelegd.