재귀적 셀프 조인을 사용하여 SQL Server에서 계층적 데이터를 나타내는 팁
Id, Name 및 ParentId 열이 포함된 "Categories"라는 테이블이 있고 카테고리 내에 무제한 계층을 생성할 수 있다고 가정해 보겠습니다. 비즈니스 노트북 카테고리와 모든 상위 카테고리를 표시하려면 재귀적 공통 테이블 표현식(CTE)의 기능을 활용할 수 있습니다.
샘플 '카테고리' 테이블을 만들고 데이터로 채워서 솔루션을 설명하겠습니다.
<code class="language-sql">DECLARE @Categories AS TABLE ( Id INT, Name VARCHAR(100), ParentId INT ); INSERT INTO @Categories VALUES (1, 'A', NULL), (2, 'A.1', 1), (3, 'A.2', 1), (4, 'A.1.1', 2), (5, 'B', NULL), (6, 'B.1', 5), (7, 'B.1.1', 6), (8, 'B.2', 5), (9, 'A.1.1.1', 4), (10, 'A.1.1.2', 4);</code>
다음으로 "PathFinder"라는 재귀 CTE를 생성하여 부모-자식 관계를 반복하고 상위 이름을 "Path" 열에 연결합니다.
<code class="language-sql">WITH PathFinder AS ( SELECT Id, Name, Name AS Path, ParentId FROM @Categories WHERE ParentId IS NULL UNION ALL SELECT t.Id, t.Name, CAST(cf.Path + ', ' + t.Name AS VARCHAR(100)), t.ParentId FROM @Categories t INNER JOIN PathFinder cf ON t.ParentId = cf.Id )</code>
마지막으로 PathFinder CTE를 사용하여 "비즈니스 노트북" 카테고리와 해당 상위 카테고리의 이름을 검색할 수 있습니다.
<code class="language-sql">SELECT Name, Path FROM PathFinder WHERE Name = 'Business Laptops';</code>
이 쿼리는 카테고리 이름과 해당 상위 항목을 쉼표로 구분하여 반환합니다.
다음은 재귀 쿼리에 대한 분석입니다.
이 재귀적 접근 방식을 사용하면 SQL Server에서 계층적 데이터를 효율적으로 표현하고 쿼리할 수 있으며, 이는 고유한 관계가 있는 데이터를 관리하고 분석하는 데 유용한 기술을 제공합니다.
위 내용은 SQL Server에서 재귀적 자체 조인을 사용하여 계층적 데이터 상위 항목을 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!