ฉันต้องติดตามข้อมูลใน SQL Server 2008 R2 SQLFiddle
schema:
สร้างตาราง [dbo] [ICFilters] (
[ICFilterID] [int] ตัวตน (1,1) ไม่เป็นโมฆะ
[ParentID] [int] ไม่เสียค่าเริ่มต้น 0
[FilterDesc] [varchar] (50) ไม่เป็นโมฆะ
[ใช้งาน] [tinyint] ไม่เป็นค่าเริ่มต้น 1
CONSTRAINT [PK_ICFilters] คีย์หลักที่คลัสเตอร์
([ICFilterID] ASC) พร้อม
PAD_INDEX = ปิด
STATISTICS_NORECOMPUTE = OFF
IGNORE_DUP_KEY = ปิด
ALLOW_ROW_LOCKS = เปิด
ALLOW_PAGE_LOCKS = เปิด
) เปิด [หลัก]
) เปิด [หลัก]
INSERT INTO [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 | PARENTID | FILTERDESC | ใช้งานอยู่ -------------------------------------------------- | 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 ของพาเรนต์และรูparentid = 0ท FilterDescs เป็นคำอธิบายตัวอย่างเพียงดังนั้นฉันไม่สามารถพยายามที่จะแยกเหล่านั้นสำหรับการสั่งซื้อ
คำถาม
เป็นไปได้หรือไม่ที่จะเลือกแถวทั้งหมดในลักษณะเหมือนต้นไม้ ถ้าเป็นเช่นนั้นได้อย่างไร เมื่อฉันพูดว่า 'เหมือนต้นไม้' ฉันหมายถึงเลือกผู้ปกครองซ้ำแล้วตามด้วยลูกทั้งหมดของมันจากนั้นก็เป็นลูกของทุกคนในนั้น ความลึกของการสำรวจต้นไม้ครั้งแรก
เพื่อนของฉันและฉันได้ลอง แต่เราขาดวิธีการทำงาน แต่จะพยายามต่อไป ฉันค่อนข้างใหม่กับ sql ดังนั้นอาจจะสามารถทำได้อย่างง่ายดายและฉันแค่ทำสิ่งที่ยากกว่าที่จำเป็น
ตัวอย่างเอาต์พุต (ต้องการ):
| ICFILTERID | PARENTID | FILTERDESC | ใช้งานอยู่ -------------------------------------------------- | 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 |