我有一个SQLite表的子ID和他们的父母ID。如果给定的父母也可能出现在子列中。例如:寻找与递归CTE的最终父母
child parent
----- ------
3 4
2 3
1 2
5 4
7 8
6 7
我想从递归结构转换这对那里的孩子在一列,其最终母公司(即保留所有recusing完成后父)中列出的表中列出其他。例如,上表中会导致:
child ultimate_parent
----- ---------------
3 4
2 4
1 4
5 4
7 8
6 8
据我所知,这应该使用SQLites递归的CTE是可能的,但我有麻烦开发查询。以下是我目前为止的内容,但显然不完整。
WITH RECURSIVE rel(child, parent) AS (
SELECT child, parent FROM relationships
UNION ALL
SELECT child, parent FROM rel
)
SELECT * FROM rel;
任何帮助将不胜感激。
一种用于例如表转储上述
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE `relationships` (
`child` INTEGER,
`parent` INTEGER
);
INSERT INTO relationships VALUES(3,4);
INSERT INTO relationships VALUES(2,3);
INSERT INTO relationships VALUES(1,2);
INSERT INTO relationships VALUES(5,4);
INSERT INTO relationships VALUES(7,8);
INSERT INTO relationships VALUES(6,7);
COMMIT;
请提供数据库结构和stuitably量身定制的小型数据库的样本内容作为'.dump'(即行'创建桌子......“和”插入......“)。 – Yunnosch