Dette er et kanonisk eksempel på MED REKURSIV
Prøv dette:
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
Som beskrevet i dokumentationen:
A Med RECURSCIVE er altid sammensat af
- En ikke-rekursiv term
- UNION eller UNION ALL
- Et rekursivt udtryk, det eneste, der kan referere til forespørgselsoutputtet
Recusionen ophører, når den forrige iteration ikke har noget output.