Oto przykładowy skrypt używający wspólnego wyrażenia tabelowego:
with recursive sumthis(id, val) as (
select id, value
from example
where id = :selectedid
union all
select C.id, C.value
from sumthis P
inner join example C on P.id = C.parentid
)
select sum(val) from sumthis
Powyższy skrypt tworzy „wirtualną” tabelę o nazwie sumthis
który ma kolumny id
i val
. Jest zdefiniowany jako wynik dwóch wyborów połączonych z union all
.
Najpierw select
pobiera root (where id = :selectedid
).
Drugi select
podąża za dziećmi poprzednich wyników iteracyjnie, aż nie ma nic do zwrócenia.
Wynik końcowy można następnie przetworzyć jak normalną tabelę. W tym przypadku kolumna val jest sumowana.