मुझे SQL Server 2008 R2 में डेटा का पालन करना है। SQLFiddle
स्कीमा:
बनाएँ तालिका [dbo]। [ICFilters] ( [ICFilterID] [int] पहचान (१११) पूरी नहीं, [पेरेंटिड] [इंट] नॉट डिफॉल्ट 0, [FilterDesc] [varchar] (50) नहीं, NULL, [सक्रिय] [नन्हे मुन्ने] पूरी तरह से पागल नहीं १, CONSTRAINT [PK_ICFilters] प्राथमिक कुंजी आवश्यक है ((ICFilterID) ASC) के साथ PAD_INDEX = बंद, सांख्यिकी_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ) [प्राथमिक] ) [प्राथमिक] INSERT INTO [dbo]। [ICFilters] (पेरेंटिड, फ़िल्टरडेस, एक्टिव) मान (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 |
हर पंक्ति में उसके माता-पिता की आईडी और रूट है parentid = 0
। FilterDesc
रों इसलिए मैं आदेश देने के लिए उन पार्स करने के लिए कोशिश नहीं कर सकते सिर्फ नमूना बताया गया है।
प्रश्न
क्या पेड़ की तरह सभी पंक्तियों का चयन करना संभव है? यदि हां, तो कैसे? जब मैं 'ट्री-लाइक' कहता हूं, तो मेरा मतलब है कि उसके सभी बच्चों के माता-पिता का पुनरावर्ती चयन करें, फिर उन सभी में से प्रत्येक के सभी बच्चे और इसी तरह। एक गहराई का पहला पेड़ ट्रैवर्सल।
मेरे दोस्तों और मैंने कोशिश की है, लेकिन हम काम करने के समाधान से कम हो गए हैं, लेकिन कोशिश करते रहेंगे। मैं 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 |