나는 자식 ID와 부모 ID의 SQLite 테이블을 가지고 있습니다. 부모가 자식 열에도 나타날 수 있습니다. 예를 들면 :재귀 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;
'.dump' 같은 데이터베이스 구조와 stuitably 맞는 장난감 데이터베이스의 샘플 컨텐츠 (의 예 선을주십시오'작성 : 당신은, 즉 궁극적 인 부모를 필터링 어린이하지 않은 그 부모가 테이블 ... '과'...에 끼어 들다 '). – Yunnosch