Här är ett exempelskript som använder vanligt tabelluttryck:
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
Skriptet ovan skapar en 'virtuell' tabell som heter sumthis
som har kolumner id
och val
. Det definieras som resultatet av två val sammanslagna med union all
.
Första select
hämtar roten (where id = :selectedid
).
Andra select
följer de tidigare resultaten iterativt tills det inte finns något att returnera.
Slutresultatet kan sedan bearbetas som en vanlig tabell. I detta fall summeras valkolumnen.