Tôi phải theo dõi dữ liệu trong SQL Server 2008 R2. SQLFiddle
Lược đồ:
TẠO BẢNG [dbo]. [ICFilters] ( [ICFilterID] [int] IDENTITY (1,1) KHÔNG PHẢI, [ParentID] [int] KHÔNG NULL DEFAULT 0, [FilterDesc] [varchar] (50) KHÔNG NULL, [Hoạt động] [tinyint] KHÔNG NULL DEFAULT 1, CONSTRAINT [PK_ICFilters] KHÓA CHÍNH XÁC ([ICFilterID] ASC) VỚI PAD_INDEX = TẮT, STATISTICS_NORECOMPUTE = TẮT, IGNORE_DUP_KEY = TẮT, ALLOW_law_LOCKS = BẬT, ALLOW_PAGE_LOCKS = BẬT ) TRÊN [CHÍNH HÃNG] ) TRÊN [CHÍNH HÃNG] XÁC NHẬN VÀO [dbo]. [ICFilters] (ParentID, FilterDesc, Active) Giá trị (0, Type Loại sản phẩm ', 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)
Bàn:
| ICFILTERID | PHỤ HUYNH | BỘ LỌC | HOẠT ĐỘNG | -------------------------------------------------- | 1 | 0 | Loại sản phẩm | 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 |
Mỗi hàng có ID của cha mẹ và gốc parentid = 0
. Các FilterDesc
chỉ là mô tả mẫu vì vậy tôi không thể cố phân tích chúng để đặt hàng.
Câu hỏi
Có thể chọn tất cả các hàng theo cách giống như cây không? Nếu vậy thì thế nào? Khi tôi nói 'giống như cây', tôi có nghĩa là chọn đệ quy cha mẹ theo sau bởi tất cả các con của nó, sau đó tất cả con của mỗi một trong số chúng và cứ thế. Một chiều sâu cây đầu tiên đi qua.
Bạn bè của tôi và tôi đã cố gắng nhưng chúng tôi đã thiếu các giải pháp làm việc nhưng sẽ tiếp tục cố gắng. Tôi còn khá mới với sql nên có lẽ điều này có thể được thực hiện dễ dàng và tôi chỉ làm mọi thứ khó khăn hơn mức cần thiết.
Ví dụ (mong muốn) đầu ra:
| ICFILTERID | PHỤ HUYNH | BỘ LỌC | HOẠT ĐỘNG | -------------------------------------------------- | 1 | 0 | Loại sản phẩm | 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 |