ฉันต้องติดตามข้อมูลใน 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
ท FilterDesc
s เป็นคำอธิบายตัวอย่างเพียงดังนั้นฉันไม่สามารถพยายามที่จะแยกเหล่านั้นสำหรับการสั่งซื้อ
คำถาม
เป็นไปได้หรือไม่ที่จะเลือกแถวทั้งหมดในลักษณะเหมือนต้นไม้ ถ้าเป็นเช่นนั้นได้อย่างไร เมื่อฉันพูดว่า 'เหมือนต้นไม้' ฉันหมายถึงเลือกผู้ปกครองซ้ำแล้วตามด้วยลูกทั้งหมดของมันจากนั้นก็เป็นลูกของทุกคนในนั้น ความลึกของการสำรวจต้นไม้ครั้งแรก
เพื่อนของฉันและฉันได้ลอง แต่เราขาดวิธีการทำงาน แต่จะพยายามต่อไป ฉันค่อนข้างใหม่กับ 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 |