TOP

SQL-पाठ 12. संयुक्त क्वेरीज़ (UNION)

अधिकांश SQL क्वेरीज़ एक एकल कथन का उपयोग करती हैं जो एक या अधिक तालिकाओं से डेटा लौटाता है। SQL आपको एक ही समय में कई अलग-अलग क्वेरी चलाने और परिणाम को एकल डेटा सेट के रूप में प्रदर्शित करने की भी अनुमति देता है। ऐसी संयुक्त क्वेरीज़ को आमतौर पर जॉइन्स या कॉम्प्लेक्स क्वेरीज़ कहा जाता है।


1. UNION ऑपरेटर का उपयोग करना

SQL क्वेरीज़ को UNION ऑपरेटर का उपयोग करके संयोजित किया जाता है। ऐसा करने के लिए, आपको प्रत्येक अनुरोध को SELECT निर्दिष्ट करना होगा और उनके बीच कीवर्ड UNION रखना होगा। एक सामान्य क्वेरी में UNION ऑपरेटर के उपयोग की संख्या की कोई सीमा नहीं है। पिछले अनुभाग में हमने नोट किया था कि MS Access में पूर्ण बाहरी यूनियन बनाने की क्षमता नहीं है, अब हम देखेंगे कि इसे UNION ऑपरेटर के माध्यम से कैसे प्राप्त किया जा सकता है।

Run SQLSELECT *
FROM Sumproduct 
LEFT JOIN Sellers2 
ON Sumproduct.City = Sellers2.City
UNION
SELECT * 
FROM Sumproduct 
RIGHT JOIN Sellers2 
ON Sumproduct.City = Sellers2.City

हम देखते हैं कि क्वेरी ने पहली तालिका और दूसरी तालिका से सभी कॉलम प्रदर्शित किए हैं, भले ही सभी रिकॉर्ड के समकक्ष किसी अन्य तालिका में हों।

यह भी ध्यान देने योग्य है कि कई मामलों में, UNION के बजाय, हम कई शर्तों के साथ WHERE क्लॉज का उपयोग कर सकते हैं, और एक समान परिणाम प्राप्त कर सकते हैं। हालाँकि, UNION के माध्यम से, रिकॉर्ड अधिक संक्षिप्त और स्पष्ट दिखते हैं।

संयुक्त प्रश्न लिखते समय कुछ नियमों का पालन करना भी आवश्यक है:

  • UNION अनुरोध में UNION कीवर्ड द्वारा अलग किए गए दो या अधिक SELECT ऑपरेटर शामिल होने चाहिए (अर्थात, यदि अनुरोध में चार SELECT ऑपरेटरों का उपयोग किया जाता है, तो तीन UNION कीवर्ड होने चाहिए);
  • UNION ऑपरेटर में प्रत्येक क्वेरी में समान कॉलम, अभिव्यक्ति या सांख्यिकीय फ़ंक्शन होने चाहिए, जो, इसके अलावा, उसी क्रम में सूचीबद्ध होने चाहिए;
  • कॉलम डेटा प्रकार संगत होना चाहिए। जरूरी नहीं कि वे एक ही प्रकार के हों, लेकिन उनके पास एक समान प्रकार होना चाहिए ताकि डीबीएमएस उन्हें स्पष्ट रूप से परिवर्तित कर सके (उदाहरण के लिए, वे अलग-अलग संख्यात्मक डेटा प्रकार या अलग-अलग दिनांक प्रकार हो सकते हैं)।
  • 2. दोहराई गई पंक्तियों को शामिल करें या बाहर करें

    UNION वाली क्वेरी स्वचालित रूप से क्वेरी परिणाम सेट से सभी डुप्लिकेट पंक्तियों को हटा देती है (दूसरे शब्दों में, एक SELECT कथन में एकाधिक शर्तों के साथ WHERE क्लॉज की तरह व्यवहार करती है)। यह UNION ऑपरेटर का डिफ़ॉल्ट व्यवहार है, लेकिन हम चाहें तो इसे बदल सकते हैं। इसके लिए हमें UNION के बजाय ऑपरेटर UNION ALL का उपयोग करना चाहिए।

    3. संयुक्त प्रश्नों के परिणामों को क्रमबद्ध करना

    SELECT कथन के परिणाम ORDER BY कथन का उपयोग करके क्रमबद्ध किए जाते हैं। UNION का उपयोग करके प्रश्नों को संयोजित करते समय, केवल एक ORDER BY क्लॉज का उपयोग किया जा सकता है, और इसे अंतिम SELECT कथन में रखा जाना चाहिए। दरअसल, व्यवहार में, परिणामों के एक हिस्से को एक क्रम में और दूसरे हिस्से को दूसरे क्रम में क्रमबद्ध करने का कोई मतलब नहीं है। इसलिए, एकाधिक वाक्य ORDER BY की अनुमति नहीं है।