Ето примерен скрипт, използващ общ израз на таблица:
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
Скриптът по-горе създава "виртуална" таблица, наречена sumthis
който има колони id
и val
. Дефинира се като резултат от две селекции, обединени с union all
.
Първо select
получава корен (where id = :selectedid
).
Второ select
следва децата на предишните резултати итеративно, докато няма какво да върне.
След това крайният резултат може да бъде обработен като нормална таблица. В този случай колоната val се сумира.