Dit is een canoniek voorbeeld van MET RECURSIEVE
Probeer dit:
with recursive subordinates as
(select
employeid,
e.managerid,
e.managerid as leader
from employes e
where e.managerid in(select * from leaders) -- non recursive term
union
select
e.employeid,
e.managerid,
a.managerid as leader
from employes e
join subordinates a on a.employeid = e.managerid -- recursive term
) select * from subordinates
Zoals beschreven in de documentatie:
EEN MET RECURSCIEVE is altijd samengesteld door
- Een niet-recursieve term
- UNIE of UNION ALL
- Een recursieve term, de enige die kan verwijzen naar de uitvoer van de zoekopdracht
De recusion stopt wanneer de vorige iteratie geen output heeft.