[SQL] 부모 - 자식 체인에 대한 SQL 쿼리
SQL부모 - 자식 체인에 대한 SQL 쿼리
나는 부모로서 테이블에 하나 명의 다른 멤버를 참조 할 수 있습니다 하나의 테이블이있다. 그 부모는 등 부모로서 하나 개의 다른 행을 참조 ... 그리고 수 있습니다.
id col1 col2 parentID
1 foo bar NULL
2 blah boo 1
3 fob far 2
4 wob lob NULL
나는 ID를 부여 체인을 반환하고 싶습니다. 그래서 ID가 3 인 경우에 나는 3 행, 2 행을 반환하고 ID가 나는 2 행을 반환하고, ID가 1 또는 4 난 그냥 그 행을 반환한다면 1. 행 것이 있었다면 1. 행.
감사합니다
해결법
-
==============================
1.재귀 CTE를 사용합니다 :
재귀 CTE를 사용합니다 :
DECLARE @id INT SET @id = 3 ;WITH hierarchy AS ( SELECT t.id, t.parentid FROM YOUR_TABLE t WHERE t.id = @id UNION ALL SELECT x.id, x.parentid FROM YOUR_TABLE x JOIN hierarchy h ON h.parentid = x.id) SELECT h.id FROM hierarchy h
결과 :
id --- 3 2 1
-
==============================
2.여기 가서
여기 가서
SELECT P.cat_id AS parent_cat_id, P.parent_id AS ROOT, P.cat_name AS parent_cat_name, C.parent_id, C.cat_id, C.cat_name FROM categories AS P LEFT OUTER JOIN categories AS C ON C.parent_id=P.cat_id WHERE P.parent_id IS NULL ORDER BY parent_cat_name, cat_name
-
==============================
3.재귀 CTE를 사용하는 경우, 추가하는 것을 잊지 마세요
재귀 CTE를 사용하는 경우, 추가하는 것을 잊지 마세요
h.parentid <> x.id
당신에하는 가입
JOIN hierarchy h ON h.parentid = x.id)
다른 사람은 단지 최대 재귀 오류는 루프 때문에
-
==============================
4.
WITH Hierarchy(ChildId, ChildName, Generation, ParentId) AS ( SELECT Id, Name, 0, ParentId FROM UserType AS FirtGeneration WHERE ParentId IS NULL UNION ALL SELECT NextGeneration.Id, NextGeneration.Name, Parent.Generation + 1, Parent.ChildId FROM UserType AS NextGeneration INNER JOIN Hierarchy AS Parent ON NextGeneration.ParentId = Parent.ChildId ) SELECT * FROM Hierarchy OPTION(MAXRECURSION 32767)
from https://stackoverflow.com/questions/4188427/sql-query-for-parent-child-chain by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 동적 피벗 (0) | 2020.06.15 |
---|---|
[SQL] 하나 또는 여러 개의 데이터베이스 (0) | 2020.06.15 |
[SQL] 어떻게 JTable의에서 JCheckBox에 추가하는? (0) | 2020.06.15 |
[SQL] 어떻게 VARBINARY (최대) 컬럼에 이미지를 저장? (0) | 2020.06.15 |
[SQL] JDBC와 SQL에서 날짜 사이세요? (0) | 2020.06.15 |