SQL Server 2005에서
이상에서는 쿼리 이런 종류의 재귀 CTE (공통 테이블 식)를 사용하는 것이 가장 적합합니다. (SQL 2000 및 이전 버전에서는 재귀 저장 프로 시저 사용이 제한적이었습니다).
다음과 같은 뭔가 당신이 필요로하는 무엇을 :
WITH ParentChildRels (ParentId, ChildId, KeyField, HierarchyLevel) AS
(
-- Base case
SELECT
ParentId,
ChildId,
KeyField,
1 as HierarchyLevel
FROM Records
WHERE ChildId = @ChildId
UNION ALL
-- Recursive step
SELECT
r.ParentId,
r.ChildId,
r.KeyField,
pr.HierarchyLevel + 1 AS HierarchyLevel
FROM Records r
INNER JOIN ParentChildRels pr ON
r.ParentId = pr.ParentId
)
SELECT *
FROM ParentChildRels
ORDER BY HierarchyLevel, ParentId, ChildId, KeyField
중복의 골라 봐 : http://stackoverflow.com/search?q=recursive+cte –
특히 : http://stackoverflow.com/questions/1709397/recursive-function-in-sql-server-2005 –
그래, 많은 복제본 - 재귀 CTE에 대해 알고 있지 않으면 사용하려는 검색어를 알지 못하는 성가신 사례 중 하나입니다. –