【发布时间】:2016-07-08 03:29:28
【问题描述】:
我在 DB2 中创建了一个表:
CREATE TABLE mytable
(
loan_id integer,
client_id integer
);
在表格中插入值:
INSERT INTO mytable(
loan_id, client_id)
VALUES (1, '2');
最后表格包含以下数据:
loan_id client_id
1 2
1 4
4 2
2 3
我想运行一个 SQL 查询来枚举(打印)所有唯一可能的路径。下面给出了一个示例输出:
1 -> 2
1 -> 4
4 -> 2
2 -> 3
1 -> 2 -> 3
4 -> 1 -> 2
4 -> 2 -> 3
4 -> 1 -> 2 -> 3
3 -> 2 -> 4 -> 1
我查看了以下answer 并尝试了以下代码,但出现错误:
WITH links AS
( SELECT
loan_id,
client_id as c1,
client_id as c2, 0 as distance
FROM
mytable
-- recursion
UNION ALL
SELECT
t.loan_id,
l.c1 as c1,
tt.client_id as c2,
distance+ as distance
FROM
links l INNER JOIN
myTable t ON l.c2 = t.client_id
AND l.loan_id != t.loan_id INNER JOIN
myTable tt ON t.loan_id = tt.loan_id
AND t.client_id != tt.client_id
)
SELECT * FROM mytable t
WHERE EXISTS
(SELECT * FROM links
WHERE c2 = t.client_id and c1 = 3);
感谢您的帮助。
【问题讨论】:
-
它给出了哪个错误?
标签: sql database db2 recursive-query