एसक्यूएल - यूनियन क्लब

SQL UNION क्लॉज / ऑपरेटर का उपयोग दो या अधिक सेलेक्ट स्टेटमेंट के परिणामों को संयोजित करने के लिए किया जाता है बिना किसी डुप्लिकेट पंक्तियों को वापस किए।

इस UNION क्लॉज का उपयोग करने के लिए, प्रत्येक SELECT स्टेटमेंट होना चाहिए

  • समान संख्या में कॉलम चुने गए
  • स्तंभ अभिव्यक्तियों की समान संख्या
  • एक ही डेटा प्रकार और
  • उन्हें उसी क्रम में है

लेकिन उन्हें एक ही लंबाई में होने की आवश्यकता नहीं है।

वाक्य - विन्यास

मूल वाक्य रचना a UNION खंड इस प्रकार है -

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

यहां, दी गई शर्त आपकी आवश्यकता के आधार पर दी गई कोई भी अभिव्यक्ति हो सकती है।

उदाहरण

निम्नलिखित दो तालिकाओं पर विचार करें।

Table 1 - ग्राहक तालिका निम्नानुसार है।

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Table 2 - आदेश तालिका निम्नानुसार है।

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

अब, इन दो सारणियों को अपने SELECT स्टेटमेंट में निम्नानुसार शामिल करते हैं -

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION
   SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   RIGHT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

यह निम्नलिखित परिणाम का उत्पादन करेगा -

+------+----------+--------+---------------------+
| ID   | NAME     | AMOUNT | DATE                |
+------+----------+--------+---------------------+
|    1 | Ramesh   |   NULL | NULL                |
|    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
|    5 | Hardik   |   NULL | NULL                |
|    6 | Komal    |   NULL | NULL                |
|    7 | Muffy    |   NULL | NULL                |
+------+----------+--------+---------------------+

यूनिअन ऑल क्लॉज

UNION ALL ऑपरेटर का उपयोग डुप्लिकेट पंक्तियों सहित दो SELECT स्टेटमेंट्स के परिणामों को संयोजित करने के लिए किया जाता है।

UNION क्लॉज पर लागू होने वाले समान नियम UNION ऑल ऑपरेटर पर लागू होंगे।

वाक्य - विन्यास

का मूल सिंटैक्स UNION ALL इस प्रकार है।

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

यहां, दी गई शर्त आपकी आवश्यकता के आधार पर दी गई कोई भी अभिव्यक्ति हो सकती है।

उदाहरण

निम्नलिखित दो तालिकाओं पर विचार करें,

Table 1 - ग्राहक तालिका निम्नानुसार है।

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Table 2 - आदेश तालिका निम्नानुसार है।

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

अब, इन दो सारणियों को अपने SELECT स्टेटमेंट में निम्नानुसार शामिल करते हैं -

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION ALL
   SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   RIGHT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

यह निम्नलिखित परिणाम का उत्पादन करेगा -

+------+----------+--------+---------------------+
| ID   | NAME     | AMOUNT | DATE                |
+------+----------+--------+---------------------+
|    1 | Ramesh   |   NULL | NULL                |
|    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
|    5 | Hardik   |   NULL | NULL                |
|    6 | Komal    |   NULL | NULL                |
|    7 | Muffy    |   NULL | NULL                |
|    3 | kaushik  |   3000 | 2009-10-08 00:00:00 |
|    3 | kaushik  |   1500 | 2009-10-08 00:00:00 |
|    2 | Khilan   |   1560 | 2009-11-20 00:00:00 |
|    4 | Chaitali |   2060 | 2008-05-20 00:00:00 |
+------+----------+--------+---------------------+

दो अन्य खंड (जैसे, ऑपरेटर) हैं, जो यूनिअन खंड की तरह हैं।

  • SQL INTERSECT क्लॉज - इसका उपयोग दो SELECT स्टेटमेंट को मिलाने के लिए किया जाता है, लेकिन केवल पहले SELECT स्टेटमेंट से ही पंक्तियों को लौटाता है जो दूसरे SELECT स्टेटमेंट में एक पंक्ति के समान है।

  • SQL EXCEPT क्लॉज - यह दो सेलेक्ट स्टेटमेंट्स को जोड़ती है और पहले सेलेक्ट स्टेटमेंट से उन पंक्तियों को लौटाती है जो दूसरे सेलेक्ट स्टेटमेंट द्वारा वापस नहीं आती हैं।