我有一個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