parentID를 통해 자체적으로 연결되는 SQL 테이블이 있습니다. 나는 아이들과 그 아이들을 찾아 내고 모든 아이들의 물건을 찾을 때까지 기다리고있다. 이 작업을 수행하는 재귀 함수가 있지만 매우 효과적이지는 않습니다.모든 하위 단위를보다 효율적으로 가져 오는 방법
sql이 모든 하위 객체를 찾을 수있는 방법이 있습니까? 그렇다면 어떻게? Microsoft SQL Server 관리 스튜디오 익스프레스 9.00.2047.00
parentID를 통해 자체적으로 연결되는 SQL 테이블이 있습니다. 나는 아이들과 그 아이들을 찾아 내고 모든 아이들의 물건을 찾을 때까지 기다리고있다. 이 작업을 수행하는 재귀 함수가 있지만 매우 효과적이지는 않습니다.모든 하위 단위를보다 효율적으로 가져 오는 방법
sql이 모든 하위 객체를 찾을 수있는 방법이 있습니까? 그렇다면 어떻게? Microsoft SQL Server 관리 스튜디오 익스프레스 9.00.2047.00
Sql Server 2005 CTEs을 사용해보십시오.
DECLARE @Table TABLE(
ID INT,
Val VARCHAR(10),
ParentID INT
)
INSERT INTO @Table SELECT 1, 'A', NULL
INSERT INTO @Table SELECT 2, 'B', NULL
INSERT INTO @Table SELECT 3, 'C', 1
INSERT INTO @Table SELECT 4, 'D', 1
INSERT INTO @Table SELECT 5, 'E', 4
INSERT INTO @Table SELECT 5, 'F', 2
;WITh Parents AS (
SELECT *,
CAST(Val + '/' AS VARCHAR(100))PathVal
FROm @Table
WHERE ParentID IS NULL
UNION ALL
SELECT t.*,
CAST(p.PathVal + t.Val + '/' AS VARCHAR(100))
FROM @Table t INNER JOIN
Parents p ON t.ParentID = p.ID
)
SELECT *
FROM Parents
트리의 깊이에 따라 내가 Nested Set Model 같은 것을 제안
MAXRECURSION 쿼리 힌트
코드가 이깁니다. +1 : –
감사합니다. 도움이되었습니다. 이제 재귀 SQL 감사를 이해합니다. – Hazior
이러한 쿼리는 일반적으로 'INNER JOIN'및 'LEFT JOIN'이 포함 된 손 (또는 쿼리 디자이너)으로 작성됩니다. –
나는 모든 자식 개체를 찾을 때까지 아이들과 아이들을 찾고 싶습니다. – Hazior
어떤 데이터베이스가 있습니까? 버전을 포함하십시오. –