Dies ist eine vereinfachte Version eines Problems in PostgreSQL.
Ich habe die folgende Tabelle A :
[ID INTEGER | VALUE NUMERIC (10,2) | PARENT INTEGER ]
Dabei ist 'PARENT' eine auf sich selbst verweisende FK zur Spalten-ID.
Die Tabellendefinition lautet:
%Vor%Diese einfache Tabelle erlaubt es, Baumdatenstrukturen beliebiger Tiefe zu definieren. Jetzt muss ich eine SQL schreiben (ich bevorzuge keine serverseitige PL-SQL), die für jeden Knoten den Gesamtwert des darunter liegenden Unterbaums "hängt". Zum Beispiel mit der folgenden Tabelle:
%Vor%Ich sollte folgende Ergebnismenge erhalten:
%Vor%Sie können einfach davon ausgehen, dass nur Blattknoten Werte haben, Nicht-Blattknoten in der Spalte VALUE immer den Wert NULL . Gibt es eine Möglichkeit, dies in SQL zu tun, sogar mit PostgreSQL-spezifischen Erweiterungen?
In PostgreSQL können Sie rekursive CTEs (Common Table Expression) verwenden, um Bäume in Ihren Abfragen zu führen.
Hier sind zwei relevante Links in die Dokumente:
BEARBEITEN
Da kein Subselect erforderlich ist, kann es bei einem größeren Dataset etwas besser laufen als bei Arions Abfrage.
%Vor%Tags und Links sql postgresql common-table-expression