Voici un exemple de script utilisant une expression de table commune :
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
Le script ci-dessus crée une table "virtuelle" appelée sumthis qui a des colonnes id et val . Il est défini comme le résultat de deux sélections fusionnées avec union all .
Première select obtient la racine (where id = :selectedid ).
Deuxième select suit les enfants des résultats précédents de manière itérative jusqu'à ce qu'il n'y ait plus rien à renvoyer.
Le résultat final peut alors être traité comme un tableau normal. Dans ce cas, la colonne val est additionnée.