Here is an example script using common table expression:
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
The script above creates a ‘virtual’ table called sumthis
that has columns id
and val
. It is defined as the result of two selects merged with union all
.
First select
gets the root (where id = :selectedid
).
Second select
follows the children of the previous results iteratively until there is nothing to return.
The end result can then be processed like a normal table. In this case the val column is summed.