मैं सबक्वायरी के बारे में पढ़ रहा हूं लेकिन मुझे इस विषय के बारे में कुछ संदेह हैं। कुछ प्रकार की उपश्रेणियाँ हैं? मैंने पहले से ही कुछ साइटों को देखा है जो उपश्रेणियों को "एकल-पंक्ति उपश्रेणियों, एकाधिक स्तंभ उपश्रेणियों, एकाधिक स्तंभ उपश्रेणियों" में विभाजित करती हैं। अन्य जो कहते हैं कि इस प्रकार की उपश्रेणियाँ हैं "एक नए कॉलम के रूप में सबक्वेरी, एक सबक्वेरी से डेटा का चयन, कई टेबल का उपयोग करके सबक्वेरी"। तो, आईएम, इस बारे में थोड़ा उलझन में है कि किस प्रकार की सबक्वायरी मौजूद हैं और प्रत्येक प्रकार कैसे काम करता है। क्या आप जानते हैं कि किस प्रकार की उपश्रेणियाँ मौजूद हैं और उनके बीच क्या अंतर है? या क्या आपके पास इस विषय के बारे में कोई संसाधन है? धन्यवाद!

0
Oscar 23 अक्टूबर 2020, 13:06

2 जवाब

सबसे बढ़िया उत्तर

मैं उन्हें सबक्वेरी के अलग-अलग प्रकार नहीं कहूंगा... एक सबक्वेरी किसी अन्य क्वेरी के भीतर सिर्फ कोई क्वेरी है। यह सभी प्रकार के विभिन्न तरीकों से लागू किया जा सकता है।

उदाहरण के लिए आप एक कॉलम चाहते हैं जो एक सबक्वायरी का उपयोग करके प्रत्येक पंक्ति के लिए (समान) अधिकतम श्रेणी मान दिखाता है जो एक परिणाम देता है:

SELECT ID, value
,(SELECT MAX(value) from TBL) AS MAX_VALUE
FROM TBL

या आप एक सबक्वायरी में शामिल हो सकते हैं जैसे कि यह एक टेबल/दृश्य था जैसे:

SELECT *
FROM A
JOIN (
      SELECT B.col1, C.col2
      FROM B
      JOIN C on B.ID = C.ID
      WHERE B.col3 = 2
     ) SUB on A.col1 = SUB.col1

सबक्वायरी का उपयोग करने के अनगिनत अन्य तरीके हैं - लेकिन अनिवार्य रूप से यह आपके आवश्यक परिणाम प्राप्त करने के लिए केवल कोई प्रश्न है जो एक बड़ी क्वेरी के भीतर बैठता है।

आपके उदाहरणों के संदर्भ में - किसी भी क्वेरी का उपयोग एक पंक्ति, या एकल मान, या एकाधिक कॉलम वापस करने के लिए किया जा सकता है - और एक टेबल, या एकाधिक टेबल या वास्तव में कोई टेबल नहीं उपयोग कर सकता है। एक सबक्वायरी अलग नहीं है - यह सिर्फ दूसरी क्वेरी का हिस्सा बनती है।

1
Joe Shark 23 अक्टूबर 2020, 13:22

विभिन्न प्रकार की उपश्रेणियाँ हैं। ये इस बात पर निर्भर करते हैं कि उपश्रेणियों का उपयोग कैसे किया जाता है और उपश्रेणियों का निर्माण कैसे किया जाता है। यहां कुछ उदाहरण दिए गए हैं।

स्केलर सबक्वेरी एक बहुत ही महत्वपूर्ण प्रकार है। यह एक सबक्वेरी है जो एक कॉलम और अधिकतम एक पंक्ति लौटाती है। एक स्केलर सबक्वेरी महत्वपूर्ण है क्योंकि इसका उपयोग कहीं भी किया जा सकता है - या लगभग कहीं भी - कि एक स्थिरांक का उपयोग किया जा सकता है। तो एक अदिश उपश्रेणी 1 या 'abc' या current_date जैसे स्थिरांक को प्रतिस्थापित कर सकती है।

(नोट: कुछ डेटाबेस एक कॉलम पर प्रतिबंध को शिथिल करते हैं।)

FROM क्लॉज में, सबक्वेरी एक व्युत्पन्न टेबल लौटाती है। लौटाई गई पंक्तियों या स्तंभों की संख्या पर कोई प्रतिबंध नहीं है।

इसी तरह, EXISTS और NOT EXISTS के साथ शुरू की गई उपश्रेणियाँ कितनी भी पंक्तियाँ और स्तंभ लौटा सकती हैं।

फिर, IN और NOT IN हैं। अधिकांश डेटाबेस के लिए आवश्यक है कि ये केवल एक कॉलम लौटाएं (लेकिन पंक्तियों की संख्या पर कोई प्रतिबंध नहीं)। कुछ डेटाबेस इस संदर्भ में एकाधिक कॉलम ("टुपल्स") का समर्थन करते हैं।

इसी तरह - हालांकि बहुत कम आम - उपश्रेणियों का उपयोग ANY/SOME/ALL का उपयोग करके तुलना संचालन के साथ किया जा सकता है। ये भी केवल एक कॉलम लौटा सकते हैं (जब तक कि डेटाबेस टुपल्स का समर्थन नहीं करता)।

"उपश्रेणियों" का एक और उपयोग ध्यान देने योग्य है। इनका उपयोग WITH के साथ पेश किए गए सामान्य टेबल एक्सप्रेशन (CTE) को परिभाषित करने के लिए किया जा सकता है।

और उपश्रेणियों का उपयोग पार्श्व जोड़ के साथ भी किया जाता है।

अंत में, कुछ उपश्रेणियाँ बाहरी क्वेरी में स्तंभों को संदर्भित करती हैं। ये सहसंबंधित सबक्वेरी हैं। सामान्य तौर पर, उन्हें FROM क्लॉज को छोड़कर कहीं भी इस्तेमाल किया जा सकता है - हालांकि लेटरल जॉइन एक अपवाद हैं।

यह सब आपके द्वारा उपयोग किए जा रहे डेटाबेस के दस्तावेज़ीकरण में शामिल होना चाहिए।

0
Gordon Linoff 23 अक्टूबर 2020, 14:42