【发布时间】:2016-01-23 13:24:45
【问题描述】:
我正在尝试创建某个 SQL 查询。首先,这是 ER 图和我创建的表:
CREATE TABLE Course (
CNr INTEGER PRIMARY KEY NOT NULL,
costs NUMERIC(7, 2) NOT NULL
);
CREATE TABLE requires (
pred INTEGER REFERENCES Course(CNr),
succ INTEGER REFERENCES COURSE(CNr),
PRIMARY KEY(pred, succ)
);
表格及其值如下所示:
| Course | | requires |
|-------------| |-------------|
| CNr | costs | | pred | succ |
|-----|-------| |------|------|
| 1 | 100 | | 1 | 2 |
| 2 | 200 | | 1 | 3 |
| 3 | 300 | | 2 | 3 |
| 4 | 400 | | 3 | 4 |
我需要的是返回一个课程的 CNr 和它本身的成本加上所有之前课程的总和。对于给定的表格,它应该如下所示:
| CNr | total |
|-----|-------|
| 1 | 100 |
| 2 | 300 |
| 3 | 600 |
| 4 | 1000 |
我省略了循环条目,因为在这种情况下它真的没有意义(如果它们按循环顺序进行,就不能真正完成课程),所以我不确定你是否有也去寻找那个。 这应该可以通过 WITH RECURSIVE 以某种方式实现,但老实说,我很茫然。至少有人能指出我正确的方向吗?
【问题讨论】:
标签: sql postgresql recursion circular-dependency