Toto je kanonický příklad S REKURSIVNÍM
Zkuste toto:
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
Jak je popsáno v dokumentaci:
A S REKURZIVNÍM je vždy tvořen
- Nerekurzivní termín
- UNIE nebo UNION ALL
- Rekurzivní termín, jediný, který může odkazovat na výstup dotazu
Rekuse skončí, když předchozí iterace nemá žádný výstup.