[SQL] 트리 구조의 모든 구성원을 찾기
SQL트리 구조의 모든 구성원을 찾기
나는이 형식에 트리 형식의 테이블을 상속
StatementAreaId | ParentStatementAreaId | SubjectId | Description
-----------------------------------------------------------------
1 | 0 | 100 | Reading
2 | 0 | 110 | Maths
3 | 2 | 0 | Number
4 | 2 | 0 | Shape
5 | 3 | 0 | Addition
6 | 3 | 0 | Subtraction
궁극적 인 부모 피사체가 어디 모든 StatementAreaIds를 찾으려면, 수학 (즉 SubjectId = 110) 말한다. SubjectId이 수학 인 경우 예를 들어 나는 나무에서 StatementAreaIds의 목록을 얻을 것입니다 :
StatementAreaId
---------------
2
3
4
5
6
이 도움이되면 나무는 3의 깊이의 최대있다.
감사
해결법
-
==============================
1.구조에 재귀 CTE :
구조에 재귀 CTE :
채우기 샘플 테이블을 만들고 : (우리에게 당신의 미래의 질문에이 단계를 저장하십시오)
DECLARE @T AS TABLE ( StatementAreaId int, ParentStatementAreaId int, SubjectId int, Description varchar(20) ) INSERT INTO @T VALUES (1 , 0 , 100 , 'Reading'), (2 , 0 , 110 , 'Maths'), (3 , 2 , 0 , 'Number'), (4 , 2 , 0 , 'Shape'), (5 , 3 , 0 , 'Addition'), (6 , 3 , 0 , 'Subtraction')
질문:
;WITH CTE AS ( SELECT StatementAreaId, ParentStatementAreaId FROM @T WHERE SubjectId = 110 UNION ALL SELECT t1.StatementAreaId, t1.ParentStatementAreaId FROM @T t1 INNER JOIN CTE ON t1.ParentStatementAreaId = CTE.StatementAreaId ) SELECT StatementAreaId FROM CTE
결과 :
StatementAreaId 2 3 4 5 6
from https://stackoverflow.com/questions/40631222/find-all-members-in-a-tree-structure by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버에서 하버 사인 식의 SQL 쿼리 (0) | 2020.07.15 |
---|---|
[SQL] SQL 쿼리는 값 목록에 여러 범위에 대한 일치하는 번호 목록을 번역하기 (0) | 2020.07.15 |
[SQL] .NET 간단한 양식 AJAX와 JQUERY를 통해 제출 (0) | 2020.07.15 |
[SQL] 어떻게 MS Access 데이터베이스 페이징을 + 검색하려면? (0) | 2020.07.15 |
[SQL] SQL 서버 2008 : INSERT하지 존재하는 경우는, 고유의 열을 유지 (0) | 2020.07.15 |