這是我在PostgreSQL中遇到的問題的簡化版本。PostgreSQL中的分層和
我有以下表甲:
[IDINTEGER| VALUENUMERIC(10,2)| PARENTINTEGER]
在哪裏 '父' 是一個自引用FK到列ID。
表定義爲:
CREATE TABLE A(ID INTEGER IDENTITY, VALUE NUMERIC(10,2), PARENT INTEGER)
ALTER TABLE A ADD CONSTRAINT FK FOREIGN KEY (PARENT) REFERENCES A(ID)
這個簡單的表允許定義任意深度的樹數據結構。現在我需要編寫一個報告每個節點的SQL(我寧願不使用服務器端PL-SQL),在其下面填充子樹的總數值。例如,下表:
| ID | VALUE | PARENT |
-------------------------
| 1 | NULL | NULL |
| 2 | 3.50 | 1 |
| 3 | NULL | NULL |
| 4 | NULL | 3 |
| 5 | 1.50 | 4 |
| 6 | 2.20 | 4 |
我應該得到以下結果集:
| ID | Total-Value-of-Subtree |
| 1 | 3.50 |
| 2 | 3.50 |
| 3 | 3.70 |
| 4 | 3.70 |
| 5 | 1.50 |
| 6 | 2.20 |
對於simplicitly,你可以假設,只有葉節點有值,非葉節點總是有值NULL在VALUE列中。有沒有辦法在SQL中做到這一點,即使利用PostgreSQL特定的擴展?