Database
 sql >> डेटाबेस >  >> RDS >> Database

SQL में दो प्रश्नों के परिणामों को कैसे संयोजित करें

समस्या:

आप SQL में दो तालिकाओं से दिए गए कॉलम (समान डेटा प्रकार के) से डेटा प्रदर्शित करना चाहते हैं।

उदाहरण:

हमारे डेटाबेस में दो टेबल हैं:employee और customer

employee तालिका में निम्नलिखित कॉलम में डेटा है:id , पहला_नाम , last_name , और उम्र

<थ>प्रथम_नाम
आईडी last_name उम्र
1 टॉम मिलर 22
2 जॉन स्मिथ 26
3 लिसा विलियम्स 30
4 चार्ल्स डेविस 21
5 जेम्स मूर 22

customer तालिका में निम्नलिखित कॉलम में डेटा है:id , पहला_नाम , last_name , और उम्र

<थ>प्रथम_नाम
आईडी last_name उम्र
1 मिलान स्मिथ 45
2 चार्ल्स डेविस 21
3 चिह्नित करें समर्थक 19

एक परिणाम सेट में, डेटाबेस में सभी लोगों, कर्मचारियों और ग्राहकों दोनों के लिए पहला नाम, अंतिम नाम और आयु प्रदर्शित करते हैं।

समाधान 1:

हम UNION ALL का उपयोग करेंगे दो तालिकाओं में स्तंभों से डेटा में शामिल होने के लिए।

यहां वह प्रश्न है जो आप लिखेंगे:

SELECT first_name, last_name, age FROM employee
UNION ALL
SELECT first_name, last_name, age FROM customer;

ये रहा परिणाम:

<थ>पहला_नाम
last_name उम्र
टॉम मिलर 22
जॉन स्मिथ 26
लिसा विलियम्स 30
चार्ल्स डेविस 21
जेम्स मूर 28
मिलान स्मिथ 45
चार्ल्स डेविस 21
चिह्नित करें समर्थक 19

चर्चा:

दो या दो से अधिक तालिकाओं में स्तंभों से डेटा को जोड़ने के लिए UNION ALL क्लॉज का उपयोग करें। हमारे उदाहरण में, हम employee और customer टेबल। UNION ALL कीवर्ड के बाईं ओर, पहली तालिका से डेटा प्राप्त करने के लिए पहला SELECT स्टेटमेंट डालें (हमारे उदाहरण में, टेबल employee ) दाईं ओर, दूसरी तालिका से डेटा प्राप्त करने के लिए एक अन्य SELECT कथन का उपयोग करें (हमारे उदाहरण में, customer )

याद रखें कि दोनों तालिकाओं में चयनित डेटा प्रत्येक कॉलम में समान डेटा प्रकार का होना चाहिए। उदाहरण के लिए, यदि पहले SELECT में पहला कॉलम एक स्ट्रिंग डेटा प्रकार है, तो दूसरे SELECT में पहला कॉलम भी एक स्ट्रिंग डेटा प्रकार होना चाहिए। अगर पहले सेलेक्ट स्टेटमेंट में दूसरा कॉलम एक पूर्णांक है, तो दूसरी तालिका में दूसरा कॉलम भी एक पूर्णांक प्रकार का होना चाहिए।

पहली क्वेरी में, हमने तीसरे कॉलम के लिए उम्र (कर्मचारी की उम्र, जो एक पूर्णांक डेटा प्रकार है) का चयन किया। इसलिए, दूसरे SELECT में तीसरा कॉलम भी एक पूर्णांक मान है; यह उम्र है ग्राहक की।

दोनों सेलेक्ट स्टेटमेंट में दूसरा कॉलम एक ही डेटा टाइप है। हालांकि, यदि दोनों तालिकाओं में मान समान हैं, तो उन्हें कई बार प्रदर्शित किया जाएगा; उदाहरण के लिए, 'चार्ल्स डेविस 21' को परिणाम सेट में दो बार दिखाया गया है।

क्या होगा यदि परिणाम तालिका में एकाधिक समान रिकॉर्ड नहीं चाहिए? इस मामले में, UNION . का उपयोग करें . यह UNION ALL . के समान है , लेकिन यह डुप्लिकेट रिकॉर्ड हटा देता है। निम्नलिखित उदाहरण देखें।

समाधान 2:

यहां वह क्वेरी है जो डुप्लिकेट रिकॉर्ड से बचाती है:

SELECT first_name, last_name FROM employee
UNION 
SELECT first_name, last_name FROM customer;

यहाँ उपरोक्त क्वेरी का परिणाम है:

<थ>पहला_नाम
last_name
चिह्नित करें समर्थक
जेम्स मूर
जॉन स्मिथ
चार्ल्स डेविस
मिलान स्मिथ
टॉम मिलर
लिसा विलियम्स

नोट:

UNION ALL UNION . से तेज है , लेकिन UNION डुप्लिकेट पंक्तियों को हटा देता है। चुनाव हमें आवश्यक परिणाम डेटा पर निर्भर करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या आपका डेटाबेस सुरक्षित है? फिर से विचार करना

  2. वर्डप्रेस – परदे के पीछे, भाग 2

  3. SQL में कमेंट कैसे करें

  4. SQL क्वेरी को कैसे गति दें

  5. एसक्यूएल में कॉलम के मूल्यों का योग कैसे करें?