sql - जॉइन और यूनियन के बीच क्या अंतर है?




database join (9)

JOIN और UNION बीच क्या अंतर है? क्या मेरे पास एक उदाहरण हो सकता है?


शामिल हों:

विभिन्न तालिकाओं के समान या अलग-अलग नामों के साथ कॉलम प्रदर्शित करने के लिए एक जॉइन का उपयोग किया जाता है। प्रदर्शित आउटपुट में व्यक्तिगत रूप से दिखाए गए सभी कॉलम होंगे। यही है, कॉलम एक दूसरे के बगल में गठबंधन किया जाएगा।

यूनिअन:

यूनियन सेट ऑपरेटर का उपयोग दो तालिकाओं से डेटा के संयोजन के लिए किया जाता है जिसमें समान डेटाटाइप वाले कॉलम होते हैं। जब एक यूनियन निष्पादित किया जाता है तो दोनों तालिकाओं का डेटा उसी डेटाटाइप वाले एक कॉलम में एकत्र किया जाएगा।

उदाहरण के लिए:

नीचे दिखाए गए दो टेबल देखें:

Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG

अब जॉइन प्रकार करने के लिए क्वेरी नीचे दिखाया गया है।

SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);

articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG

वह एक जुड़ाव है।

यूनियन का अर्थ है कि आपको समान राशि और कॉलम के प्रकार के साथ टेबल या परिणाम देना होगा और आप इसे तालिकाओं / परिणामों में एक साथ जोड़ सकते हैं। इस उदाहरण को देखो:

Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4

SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007

articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4

1. SQL जुड़ता है क्लॉज का उपयोग किसी डेटाबेस में दो या दो से अधिक तालिकाओं से रिकॉर्ड को गठबंधन करने के लिए किया जाता है। एक जॉइन प्रत्येक के लिए सामान्य मानों का उपयोग करके दो तालिकाओं से फ़ील्ड को जोड़ने के लिए एक माध्यम है।

2. एसक्यूएल यूनियन ऑपरेटर दो या दो से अधिक चयन कथन के परिणाम को जोड़ता है। यूनियन के भीतर प्रत्येक चयन कथन में समान संख्या में कॉलम होना चाहिए। कॉलम में समान डेटा प्रकार भी होना चाहिए। साथ ही, प्रत्येक SELECT कथन में कॉलम एक ही क्रम में होना चाहिए।

उदाहरण के लिए: तालिका 1 ग्राहक / तालिका 2 ऑर्डर

आंतरिक रूप से जुड़ा:

चयन आईडी, NAME, AMOUNT, DATE

ग्राहकों से

इनर जॉइन ऑर्डर

CUSTOMERS.ID = ORDERS.CUSTOMER_ID पर;

संघ:

चयन आईडी, NAME, AMOUNT, DATE

ग्राहकों से

बाएं जॉइन ऑर्डर

CUSTOMERS.ID = ORDERS.CUSTOMER_ID पर

यूनिअन

ग्राहक से आईडी, NAME, AMOUNT, दिनांक चुनें

सही जॉइन ऑर्डर

CUSTOMERS.ID = ORDERS.CUSTOMER_ID पर;


एक या अधिक तालिकाओं से डेटा को गठबंधन करने के लिए जुड़ें और यूनियनों का उपयोग किया जा सकता है। अंतर यह है कि डेटा कैसे संयुक्त होता है।

सरल शब्दों में, डेटा को नए कॉलम में जोड़ते हैं। यदि दो टेबल एक साथ जुड़ गए हैं, तो पहली तालिका का डेटा उसी पंक्ति में दूसरी तालिका के कॉलम के साथ कॉलम के एक सेट में दिखाया गया है।

यूनियन डेटा को नई पंक्तियों में जोड़ते हैं। यदि दो तालिकाओं को एक साथ "संघित" किया जाता है, तो पहली तालिका का डेटा पंक्तियों के एक सेट में होता है, और दूसरे सेट से दूसरे सेट में डेटा होता है। पंक्तियां एक ही परिणाम में हैं।


जुड़ें और यूनियनों का उपयोग एक या अधिक तालिकाओं से डेटा को गठबंधन करने के लिए किया जा सकता है। अंतर यह है कि डेटा कैसे संयुक्त होता है।

सरल शब्दों में, डेटा को नए कॉलम में जोड़ते हैं । यदि दो टेबल एक साथ जुड़ गए हैं, तो पहली तालिका का डेटा उसी पंक्ति में दूसरी तालिका के कॉलम के साथ कॉलम के एक सेट में दिखाया गया है।

यूनियन डेटा को नई पंक्तियों में जोड़ते हैं। यदि दो तालिकाओं को एक साथ "संघित" किया जाता है, तो पहली तालिका का डेटा पंक्तियों के एक सेट में होता है, और दूसरे सेट से दूसरे सेट में डेटा होता है। पंक्तियां एक ही परिणाम में हैं।

यहां शामिल होने का एक दृश्य चित्रण है। तालिका ए और बी के कॉलम एक परिणाम में संयुक्त होते हैं।

परिणाम में प्रत्येक पंक्ति में दोनों तालिका ए और बी से कॉलम होते हैं। पंक्तियां तब बनाई जाती हैं जब एक तालिका से कॉलम दूसरे से कॉलम मेल खाते हैं। इस मैच को शामिल स्थिति कहा जाता है।

यह मूल्यों को देखने और परिणामों में उन्हें शामिल करने के लिए वास्तव में महान बनाता है। यह आमतौर पर denormalizing (सामान्यीकरण को उलट) का परिणाम होता है और दूसरे तालिका में प्राथमिक कुंजी का उपयोग कर कॉलम मानों को देखने के लिए एक तालिका में विदेशी कुंजी का उपयोग करना शामिल है।

अब उपरोक्त चित्रण की तुलना एक संघ के साथ करें। एक संघ में परिणाम के भीतर प्रत्येक पंक्ति एक तालिका या दूसरी से है। एक संघ में, कॉलम परिणाम बनाने के लिए संयुक्त नहीं होते हैं, पंक्तियां संयुक्त होती हैं।

दोनों जोड़ों और यूनियनों का उपयोग एक या एक से अधिक तालिकाओं से डेटा को एक ही परिणाम में संयोजित करने के लिए किया जा सकता है। वे दोनों इस बारे में विभिन्न तरीकों से जाते हैं। जबकि विभिन्न तालिकाओं से स्तंभों को गठबंधन करने के लिए एक जॉइन का उपयोग किया जाता है, संघों को पंक्तियों को संयोजित करने के लिए उपयोग किया जाता है।

Source


यूनियन ऑपरेटर सिर्फ दो या दो से अधिक चयन विवरणों के संयोजन के लिए है।

जबकि जॉइन प्रत्येक तालिका से पंक्तियों को चुनने के लिए है, या तो आंतरिक, बाहरी, बाएं या दाएं विधि से।

here और here देखें। उदाहरणों के साथ एक बेहतर स्पष्टीकरण है।


वे पूरी तरह से अलग चीजें हैं।

एक join आपको विभिन्न तालिकाओं में समान डेटा को join अनुमति देता है।

एक संघ एक अलग रिकॉर्डसेट के रूप में दो अलग-अलग प्रश्नों के परिणाम देता है।


संघ दो प्रश्नों को एक जैसा दिखता है। एक प्रश्न पूछताछ में दो या दो से अधिक तालिकाओं की जांच के लिए शामिल हैं


MariaDB तरह कोई आधुनिक डीबीएस, यूनियन जॉइन कमांड लागू करता है। यह एक SQL 3 कमांड है, लेकिन यह अच्छी तरह से ज्ञात या प्रयोग नहीं किया जाता है। यूनियन जॉइन पर और जानें।


UNION एक-दूसरे के बाद प्रश्नों से लाइनें डालता है, जबकि JOIN एक कार्टशियन उत्पाद बनाता है और इसे सबसेट करता है - पूरी तरह से अलग-अलग संचालन। UNION का मामूली उदाहरण:

mysql> SELECT 23 AS bah
    -> UNION
    -> SELECT 45 AS bah;
+-----+
| bah |
+-----+
|  23 | 
|  45 | 
+-----+
2 rows in set (0.00 sec)

JOIN मामूली उदाहरण:

mysql> SELECT * FROM 
    -> (SELECT 23 AS bah) AS foo 
    -> JOIN 
    -> (SELECT 45 AS bah) AS bar
    -> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
|  23 |  45 | 
+-----+-----+
1 row in set (0.01 sec)




union