Hier is een voorbeeldscript dat een algemene tabeluitdrukking gebruikt:
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
Het bovenstaande script maakt een 'virtuele' tabel met de naam sumthis
met kolommen id
en val
. Het wordt gedefinieerd als het resultaat van twee selecties samengevoegd met union all
.
Eerst select
krijgt de root (where id = :selectedid
).
Tweede select
volgt iteratief de kinderen van de vorige resultaten totdat er niets meer terug te vinden is.
Het eindresultaat kan dan als een normale tabel worden verwerkt. In dit geval wordt de val-kolom opgeteld.