> 데이터 베이스 > MySQL 튜토리얼 > SQL Server의 재귀적 자체 조인은 어떻게 계층적 데이터를 효율적으로 검색할 수 있습니까?

SQL Server의 재귀적 자체 조인은 어떻게 계층적 데이터를 효율적으로 검색할 수 있습니까?

Barbara Streisand
풀어 주다: 2025-01-15 12:01:47
원래의
223명이 탐색했습니다.

How Can Recursive Self-Joins in SQL Server Efficiently Retrieve Hierarchical Data?

SQL Server에서 재귀적 자체 조인을 사용하여 계층적 데이터를 효율적으로 검색

계층적 데이터 구조를 탐색하는 것은 복잡할 수 있습니다. SQL Server의 재귀 공통 테이블 표현식(CTE)은 셀프 조인을 사용하여 이러한 트리 구조를 탐색하기 위한 강력한 솔루션을 제공합니다.

도전의 이해

범주 테이블과 같은 일반적인 계층적 데이터 모델을 생각해 보세요.

<code class="language-sql">CREATE TABLE Categories (
  Id int PRIMARY KEY,
  Name nvarchar(MAX),
  ParentId int FOREIGN KEY REFERENCES Categories(Id)
);</code>
로그인 후 복사

이 디자인은 임의 깊이의 중첩된 카테고리를 허용합니다. 아래 표시된 것처럼 이 계층 구조를 시각화하면 표준 SQL 쿼리를 사용하여 전체 계보를 검색하는 것이 어렵다는 점을 알 수 있습니다.

[카테고리 계층 이미지 삽입]

재귀적 CTE 솔루션

재귀적 CTE는 이 문제를 우아하게 해결합니다. 다음 쿼리는 카테고리와 전체 상위 항목을 검색하는 방법을 보여줍니다.

<code class="language-sql">WITH RecursiveCategoryCTE AS (
  SELECT
    c.Id,
    c.Name,
    CAST(c.Name AS nvarchar(MAX)) AS Path
  FROM Categories AS c
  WHERE
    c.ParentId IS NULL
  UNION ALL
  SELECT
    t.Id,
    t.Name,
    CAST(r.Path + ',' + t.Name AS nvarchar(MAX)) AS Path
  FROM RecursiveCategoryCTE AS r
  JOIN Categories AS t
    ON t.ParentId = r.Id
)
SELECT
  c.Id,
  c.Name,
  c.Path
FROM RecursiveCategoryCTE AS c
WHERE
  c.Name = 'Business Laptops';</code>
로그인 후 복사

쿼리 분석

  • CTE RecursiveCategoryCTE는 루트 범주(여기서 ParentId는 NULL)를 선택하는 것으로 시작됩니다.
  • Categories 테이블에 재귀적으로 다시 조인하여 Path 열을 작성하여 상위 이름을 축적합니다.
  • 마지막 SELECT 문은 대상 범주('비즈니스 노트북') 및 생성된 상위 경로를 필터링합니다.

결과는 다음과 같습니다.

Id Name Path
12 Business Laptops Computers,Laptops,Business Laptops

실제 애플리케이션

이 기술은 다음을 포함한 다양한 응용 분야에서 유용합니다.

  • 조직도
  • 전자상거래 사이트 탐색(탐색경로)
  • 계보 데이터베이스(가계도)

이 접근 방식은 SQL Server 내에서 계층적 데이터를 탐색하기 위한 간결하고 효율적인 방법을 제공합니다.

위 내용은 SQL Server의 재귀적 자체 조인은 어떻게 계층적 데이터를 효율적으로 검색할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿