표현 만 선택 노드 :재귀 쿼리 - 잎 노드가 활성 데이터는 다음 재귀 쿼리 감안할 때
WITH DepartmentHierarchy (DepartmentID, Name, IsInactive, IsSpecial, ParentId, HierarchyLevel) AS
(
-- Base case
SELECT
DepartmentId,
Name,
IsInactive,
IsSpecial,
ParentId,
1 as HierarchyLevel
FROM StoreDepartment
WHERE ParentId IS NULL
UNION ALL
-- Recursive step
SELECT
d.DepartmentId,
d.Name,
d.IsInactive,
d.IsSpecial,
d.ParentId,
dh.HierarchyLevel + 1 AS HierarchyLevel
FROM StoreDepartment d
INNER JOIN DepartmentHierarchy dh ON
d.ParentId = dh.DepartmentId
) SELECT * FROM DepartmentHierarchy
I는 다음과 같습니다 데이터를 선택할 수 있어요 : 또한
DepartmentId, Name, IsInactive, IsSpecial, ParentId, HeirarchyLevel
1, Store, 0, 0, NULL, 1
2, Main Department 1, 0, 1, 2
3, Main Department 2, 0, 1, 2
4, Sub For Main 1, 0, 2, 3
을하는 가정 DepartmentId 및 ItemId (예 : DepartmentItemRelationship)가있는 테이블이 있습니다. 부서 계층의 리프 노드는 여기의 항목과 쌍을 이룹니다.
부서/항목 관계 테이블에서 일치 항목이있는 노드가 하나 이상있는 노드 (모든 수준에서) 만 반환하도록 내 재귀 쿼리를 원합니다. 이 노드는 6 ~ 7 단계까지 내려갈 수 있으므로 포함시킬 수 있도록 내 쿼리를 어떻게 수정해야하는지 잘 모르겠습니다.
덕분에, 카일
카일, 레벨 6의 요구 사항을 충족하는 리프 노드가있는 경우 해당 노드 위의 5 개 부서를 표시 하시겠습니까? –