Hier ist ein Beispielskript, das einen allgemeinen Tabellenausdruck verwendet:
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
Das obige Skript erstellt eine „virtuelle“ Tabelle namens sumthis
die Spalten id
hat und val
. Es ist definiert als das Ergebnis zweier Auswahlen, die mit union all
zusammengeführt wurden .
Zuerst select
erhält die Wurzel (where id = :selectedid
).
Zweites select
folgt iterativ den Kindern der vorherigen Ergebnisse, bis nichts mehr zurückzugeben ist.
Das Endergebnis kann dann wie eine normale Tabelle verarbeitet werden. In diesem Fall wird die Val-Spalte summiert.