[SQL] SQL Server는 자기가 가입 재귀
SQLSQL Server는 자기가 가입 재귀
나는 다음과 같은 열에서와 같이 간단한 분류 테이블이 :
그래서 카테고리의 무한한 양이 카테고리의 자식이 될 수 있습니다. 예를 들어 다음과 같은 계층 구조 보자
내가 원하는 반환 범주 "비즈니스 노트북은"모든으로 열을 반환하는 간단한 쿼리에서 그것의 부모, 쉼표 구분 또는 뭔가 :
또는 다음 예를 살펴 :
해결법
-
==============================
1.구조에 재귀 CTE ....
구조에 재귀 CTE ....
(우리에게 당신의 미래의 질문에이 단계를 저장하십시오) 만들기 및 채우기 샘플 테이블 :
DECLARE @T as table ( id int, name varchar(100), parent_id int ) INSERT INTO @T 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)
열팽창 계수 :
;WITH CTE AS ( SELECT id, name, name as path, parent_id FROM @T WHERE parent_id IS NULL UNION ALL SELECT t.id, t.name, cast(cte.path +','+ t.name as varchar(100)), t.parent_id FROM @T t INNER JOIN CTE ON t.parent_id = CTE.id )
쿼리 :
SELECT id, name, path FROM CTE
결과 :
id name path 1 A A 5 B B 6 B.1 B,B.1 8 B.2 B,B.2 7 B.1.1 B,B.1,B.1.1 2 A.1 A,A.1 3 A.2 A,A.2 4 A.1.1 A,A.1,A.1.1 9 A.1.1.1 A,A.1,A.1.1,A.1.1.1 10 A.1.1.2 A,A.1,A.1.1,A.1.1.2
rextester에 온라인 데모를 참조하십시오
from https://stackoverflow.com/questions/42955335/sql-server-recursive-self-join by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 잠금 대기 제한 시간 초과 "얻기; 내가 트랜잭션을 사용하지 않는 경우에도 "트랜잭션을 다시 시작합니다 (0) | 2020.03.17 |
---|---|
[SQL] 어떻게 다른 테이블에 존재하지 않는 한 테이블의 모든 레코드를 선택하려면? (0) | 2020.03.17 |
[SQL] MySQL과 PostgreSQL을에 절, PostgreSQL을에 왜 오류에 의해 그룹? (0) | 2020.03.17 |
[SQL] 에 Upserting MS 액세스 (0) | 2020.03.17 |
[SQL] 어떻게 SQL Server 메모리 깨끗 SqlDependency합니까? (0) | 2020.03.17 |