SQL Server 2008 R2의 데이터를 따라야합니다. SQLFiddle
개요:
테이블 생성 [dbo]. [ICFilters] ( [ICFilterID] [int] IDENTITY (1,1) NOT NULL, [ParentID] [int] NOT NULL DEFAULT 0, [FilterDesc] [varchar] (50) NOT NULL, [활성] [tinyint] NOT NULL DEFAULT 1, 제약 조건 [PK_ICFilters] 기본 키 클러스터 ([ICFilterID] ASC) 포함 PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY] ) ON [PRIMARY] [dbo]에 삽입. [ICFilters] (ParentID, FilterDesc, Active) 가치 (0, '제품 유형', 1), (1, 'ProdSubType_1', 1), (1, 'ProdSubType_2', 1), (1, 'ProdSubType_3', 1), (1, 'ProdSubType_4', 1), (2, 'PST_1.1', 1), (2, 'PST_1.2', 1), (2, 'PST_1.3', 1), (2, 'PST_1.4', 1), (2, 'PST_1.5', 1), (2, 'PST_1.6', 1), (2, 'PST_1.7', 0), (3, 'PST_2.1', 1), (3, 'PST_2.2', 0), (3, 'PST_2.3', 1), (3, 'PST_2.4', 1), (14, 'PST_2.2.1', 1), (14, 'PST_2.2.2', 1), (14, 'PST_2.2.3', 1), (3, 'PST_2.8', 1)
표:
| ICFILTERID | 부모님 | 필터 데스크 | 활성 | -------------------------------------------------- | 1 | 0 | 제품 유형 | 1 | | 2 | 1 | ProdSubType_1 | 1 | | 3 | 1 | ProdSubType_2 | 1 | | 4 | 1 | ProdSubType_3 | 1 | | 5 | 1 | ProdSubType_4 | 1 | | 6 | 2 | PST_1.1 | 1 | | 7 | 2 | PST_1.2 | 1 | | 8 | 2 | PST_1.3 | 1 | | 9 | 2 | PST_1.4 | 1 | | 10 | 2 | PST_1.5 | 1 | | 11 | 2 | PST_1.6 | 1 | | 12 | 2 | PST_1.7 | 0 | | 13 | 3 | PST_2.1 | 1 | | 14 | 3 | PST_2.2 | 0 | | 15 | 3 | PST_2.3 | 1 | | 16 | 3 | PST_2.4 | 1 | | 17 | 14 | PST_2.2.1 | 1 | | 18 | 14 | PST_2.2.2 | 1 | | 19 | 14 | PST_2.2.3 | 1 | | 20 | 3 | PST_2.8 | 1 |
모든 행에는 부모의 ID와 루트의 ID가 parentid = 0
있습니다. 의 FilterDesc
샘플 설명이므로 주문을 위해 구문 분석을 시도 할 수 없습니다.
질문
트리와 같은 방식으로 모든 행을 선택할 수 있습니까? 그렇다면 어떻게? 'tree-like'라고 말할 때 부모를 반복적으로 선택하고 모든 자식과 그 자식의 모든 자식을 차례로 선택합니다. 깊이 첫 나무 순회.
내 친구와 나는 노력했지만 해결책이 부족했지만 계속 노력할 것입니다. 나는 SQL에 상당히 익숙하지 않으므로 아마도 쉽게 수행 할 수 있으며 필요한 것보다 더 힘들게 만들고 있습니다.
예 (원하는) 출력 :
| ICFILTERID | 부모님 | 필터 데스크 | 활성 | -------------------------------------------------- | 1 | 0 | 제품 유형 | 1 | | 2 | 1 | ProdSubType_1 | 1 | | 6 | 2 | PST_1.1 | 1 | | 7 | 2 | PST_1.2 | 1 | | 8 | 2 | PST_1.3 | 1 | | 9 | 2 | PST_1.4 | 1 | | 10 | 2 | PST_1.5 | 1 | | 11 | 2 | PST_1.6 | 1 | | 12 | 2 | PST_1.7 | 0 | | 3 | 1 | ProdSubType_2 | 1 | | 13 | 3 | PST_2.1 | 1 | | 14 | 3 | PST_2.2 | 0 | | 17 | 14 | PST_2.2.1 | 1 | | 18 | 14 | PST_2.2.2 | 1 | | 19 | 14 | PST_2.2.3 | 1 | | 15 | 3 | PST_2.3 | 1 | | 16 | 3 | PST_2.4 | 1 | | 20 | 3 | PST_2.8 | 1 | | 4 | 1 | ProdSubType_3 | 1 | | 5 | 1 | ProdSubType_4 | 1 |