私は子IDとその親IDのSQLiteテーブルを持っています。与えられた親が子の列に表示される場所。たとえば:究極の親を再帰的なCTEで見つける
child parent
----- ------
3 4
2 3
1 2
5 4
7 8
6 7
私は子供が1列に表示され、その最終的な親会社(すべて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;
は '作成の' .dump'(すなわちラインとしてデータベース構造とstuitably合わせたおもちゃのデータベースのサンプルコンテンツを提供してください。テーブル...」と「入れて...」)。 – Yunnosch