Ecco uno script di esempio che utilizza un'espressione di tabella comune:
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
Lo script sopra crea una tabella "virtuale" chiamata sumthis
che ha colonne id
e val
. È definito come il risultato di due selezioni unite con union all
.
Prima select
ottiene la radice (where id = :selectedid
).
Secondo select
segue i figli dei risultati precedenti in modo iterativo finché non c'è nulla da restituire.
Il risultato finale può quindi essere elaborato come una normale tabella. In questo caso viene sommata la colonna val.