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

एसक्यूएल क्रॉस जॉइन

यह लेख CROSS JOIN . का एक सिंहावलोकन प्रदान करता है SQL में, साथ ही साथ कुछ बुनियादी उदाहरण।

एसक्यूएल CROSS JOIN (या FULL OUTER JOIN ) उन पंक्तियों को लौटाता है जो पहली तालिका से प्रत्येक पंक्ति को दूसरी तालिका से प्रत्येक पंक्ति के साथ जोड़ती हैं।

दूसरे शब्दों में, यह जॉइन में टेबल से पंक्तियों का कार्टेशियन उत्पाद लौटाता है।

सिंटैक्स

आप FROM . में क्रॉस जॉइन निर्दिष्ट करते हैं खंड।

वाक्य रचना इस प्रकार है:

SELECT *
FROM Table1 CROSS JOIN Table2 
ON Table1.Column = Table2.Column;

उदाहरण 1

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

नमूना डेटा

सबसे पहले, यहां वे टेबल हैं जिनका हम उदाहरण के लिए उपयोग करेंगे।

t1 तालिका:

+--------+
| col1   |
|--------|
| a      |
| b      |
| c      |
+--------+

t2 तालिका:

+--------+
| col1   |
|--------|
| 1      |
| 2      |
| 3      |
+--------+

क्रॉस जॉइन क्वेरी

यहां उन दो तालिकाओं के विरुद्ध क्रॉस जॉइन करने का एक उदाहरण दिया गया है।

SELECT * FROM t1 
CROSS JOIN t2;

परिणाम:

+--------+--------+
| col1   | col1   |
|--------+--------|
| a      | 1      |
| b      | 1      |
| c      | 1      |
| a      | 2      |
| b      | 2      |
| c      | 2      |
| a      | 3      |
| b      | 3      |
| c      | 3      |
+--------+--------+
(9 rows affected)

इसलिए हमारी क्वेरी 9 पंक्तियों को लौटाती है, भले ही प्रत्येक तालिका में केवल 3 पंक्तियाँ हों।

ऐसा इसलिए है क्योंकि जिस तरह से क्रॉस जुड़ता है वह काम करता है। लौटाई गई पंक्तियों की संख्या बाईं तालिका में पंक्तियों की संख्या है, जो दाएँ तालिका में पंक्तियों की संख्या से गुणा की जाती है।

देखें कि यह बाईं तालिका के माध्यम से कैसे पुनरावृति करता है, बाईं तालिका में प्रत्येक पंक्ति के लिए प्रत्येक पंक्ति को दाईं तालिका में आउटपुट करता है।

इसका निम्न कार्य करने के समान प्रभाव पड़ता है:

SELECT * FROM t1, t2

परिणाम:

+--------+--------+
| col1   | col1   |
|--------+--------|
| a      | 1      |
| b      | 1      |
| c      | 1      |
| a      | 2      |
| b      | 2      |
| c      | 2      |
| a      | 3      |
| b      | 3      |
| c      | 3      |
+--------+--------+
(9 rows affected)

उदाहरण 2

अगर हम WHERE . जोड़ते हैं तो यहां क्या होता है हमारे क्रॉस जॉइन के लिए क्लॉज।

SELECT * FROM t1 
CROSS JOIN t2
WHERE t1.col1 = 'a';

परिणाम:

+--------+--------+
| col1   | col1   |
|--------+--------|
| a      | 1      |
| a      | 2      |
| a      | 3      |
+--------+--------+
(3 rows affected)

उदाहरण 3

मान लीजिए कि हमारे पास निम्नलिखित टेबल हैं।

PetTypes तालिका:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
| 4           | Rabbit    |
+-------------+-----------+
(4 rows affected)

Pets तालिका:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+
(8 rows affected)

इस मामले में, Pets.PetTypeId कॉलम PetTypes.PetTypeId . की एक विदेशी कुंजी है कॉलम।

अब, यहां उन दो तालिकाओं पर क्रॉस जॉइन चलाने का एक उदाहरण दिया गया है, लेकिन WHERE का उपयोग करना खंड।

SELECT 
    p.PetName,
    pt.PetType
FROM Pets p 
CROSS JOIN PetTypes pt
WHERE p.PetTypeId = pt.PetTypeId;

परिणाम:

+-----------+-----------+
| PetName   | PetType   |
|-----------+-----------|
| Fluffy    | Cat       |
| Fetch     | Dog       |
| Scratch   | Cat       |
| Wag       | Dog       |
| Tweet     | Bird      |
| Fluffy    | Dog       |
| Bark      | Dog       |
| Meow      | Cat       |
+-----------+-----------+
(8 rows affected)

WHERE जोड़ना क्रॉस जॉइन के क्लॉज ने इसे इनर जॉइन में बदल दिया।

अगर हम WHERE . को हटा देते हैं, तो यहां बताया गया है कि क्या होता है खंड।

SELECT 
    p.PetName,
    pt.PetType
FROM Pets p 
CROSS JOIN PetTypes pt;

परिणाम:

+-----------+-----------+
| PetName   | PetType   |
|-----------+-----------|
| Fluffy    | Bird      |
| Fetch     | Bird      |
| Scratch   | Bird      |
| Wag       | Bird      |
| Tweet     | Bird      |
| Fluffy    | Bird      |
| Bark      | Bird      |
| Meow      | Bird      |
| Fluffy    | Cat       |
| Fetch     | Cat       |
| Scratch   | Cat       |
| Wag       | Cat       |
| Tweet     | Cat       |
| Fluffy    | Cat       |
| Bark      | Cat       |
| Meow      | Cat       |
| Fluffy    | Dog       |
| Fetch     | Dog       |
| Scratch   | Dog       |
| Wag       | Dog       |
| Tweet     | Dog       |
| Fluffy    | Dog       |
| Bark      | Dog       |
| Meow      | Dog       |
| Fluffy    | Rabbit    |
| Fetch     | Rabbit    |
| Scratch   | Rabbit    |
| Wag       | Rabbit    |
| Tweet     | Rabbit    |
| Fluffy    | Rabbit    |
| Bark      | Rabbit    |
| Meow      | Rabbit    |
+-----------+-----------+
(32 rows affected)

हमें एक क्रॉस जॉइन मिलता है जो 32 पंक्तियों को लौटाता है।


  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. डाउनटाइम के बिना Django में एक इंडेक्स कैसे बनाएं

  5. SalesForce को पिरामिड में डेटा स्रोत के रूप में कैसे कनेक्ट करें