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.