मैं एसक्यूएल सर्वर में निम्न तालिका (2012) हैएसक्यूएल सर्वर CTE और आदेश
MyTable:
Id __ParentId Priority
1 NULL NULL
2 1 100
3 1 300
4 1 200
5 4 100
6 4 200
7 6 100
8 5 100
9 5 200
10 9 100
11 5 50
__ParentId स्तंभ का संदर्भ ईद पता करने के लिए किसी एक पंक्ति के माता-पिता और यह रिकर्सन के कई स्तरों पर जा सकता है (उदाहरण के लिए, आईडी 8
5
का बच्चा है जो 4
का बच्चा है जोका बच्चा है 0)।
इसके अलावा, प्राथमिकता कॉलम दिखाता है कि बच्चों को माता-पिता के भीतर उपस्थित होना चाहिए (सबसे कम संख्या प्राप्त प्राथमिकता)।
तो, अंतिम तालिका मैं प्राप्त करना चाहते हैं है:
Id __ParentId Priority Order
1 NULL NULL 1
2 1 100 2
4 1 200 3
5 4 100 4
11 5 50 5
8 5 100 6
9 5 200 7
10 9 100 8
6 4 200 9
7 6 100 10
3 1 300 11
एक स्पर्श व्याख्या करने के लिए, हम उस 2
1
का एक बच्चा है और सर्वोच्च प्राथमिकता है है, लेकिन कोई संतान नहीं है, तो हम वहां रुकते हैं, फिर 4
अगली प्राथमिकता बच्चा है, इसलिए यह आगे जाता है, लेकिन फिर हम प्राथमिकता और पदानुक्रम के आधार पर अपने बच्चों और उनके बच्चों में अलग हो जाते हैं।
या, एक वृक्ष संरचना के माध्यम से समझाने के लिए:
1
2
4
5
11
8
9
10
6
7
3
मैं CTE मुझे दे देंगे कि एक माता पिता के बच्चों को बना सकते हैं, लेकिन मैं सही आदेश प्राप्त करने के लिए एक अच्छा तरीका को समझ नहीं सकता , इसलिए मैं कोशिश कर रहा एक अच्छा एसक्यूएल भी प्रदान नहीं कर सकता।
नाइस - कभी नहीं माना जाता कि मैं एक पदानुक्रम आईडी +1 –
में दूसरा तत्व जोड़ सकता हूं यह समाधान भी खूबसूरत है !!! - ** आपको बहुत धन्यवाद ** - मैंने कभी नहीं सोचा/वास्तविक टेक्स्ट कॉन्सटेनेशन करना जानता था जो ** BRILLIANT ** है। यह ठीक उसी तरह काम करता है, एकमात्र कारण मैं समाधान के रूप में आपका निशान नहीं लगा सकता क्योंकि मुझे एक चुनना है और जॉन ने तेज़ी से जवाब दिया है ... मैं वास्तव में आपको धन्यवाद नहीं दे सकता, हालांकि !!! –
@ जॉन बुस्टोस उस उत्तर को स्वीकार करें जो आपके लिए सबसे अच्छा काम करता है। –