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

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

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

इसे RIGHT OUTER JOIN के नाम से भी जाना जाता है , RIGHT JOIN उन पंक्तियों को लौटाता है जिनमें डेटा सही तालिका में होता है (JOIN के दाईं ओर) कीवर्ड), भले ही बाईं तालिका में कोई मेल खाने वाली पंक्तियाँ न हों।

सिंटैक्स

आप FROM . में राइट जॉइन निर्दिष्ट करते हैं खंड। आप या तो RIGHT JOIN का उपयोग कर सकते हैं या RIGHT OUTER JOIN वाक्य रचना।

RIGHT JOIN का उपयोग करना वाक्य रचना:

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

RIGHT OUTER JOIN का उपयोग करना वाक्य रचना:

SELECT *
FROM Table1 RIGHT OUTER JOIN Table2 
ON Table1.Column = Table2.Column;

ये दोनों बिल्कुल एक ही काम करते हैं। यह बस इतना ही है कि OUTER कीवर्ड वैकल्पिक है।

उदाहरण

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

नमूना डेटा

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

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)

Owners तालिका:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
+-----------+-------------+------------+----------------+-------------------+

ध्यान दें कि:

  • PetTypeId Pets . का कॉलम तालिका PetTypeId . की एक विदेशी कुंजी है PetTypes का तालिका (जो उस तालिका की प्राथमिक कुंजी है)।
  • OwnerId Pets . का कॉलम तालिका OwnerId . की एक विदेशी कुंजी है Owners . का कॉलम टेबल.

राइट जॉइन क्वेरी

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

SELECT 
    p.PetName,
    pt.PetType
FROM Pets p
RIGHT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId;

परिणाम:

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

सही जॉइन से हमें एक PetType मिलता है मान जो PetName . से मेल नहीं खाता है . विशेष रूप से, पालतू जानवर के रूप में कोई खरगोश नहीं हैं। लेकिन सही जुड़ाव Rabbit causes का कारण बनता है लौटाया जाना है, भले ही Pets . में कोई पालतू जानवर न हो उस प्रकार की तालिका। इसका परिणाम NULL होता है PetName में मान Rabbit . के सामने स्तंभ ।

ऐसा सिर्फ इसलिए हुआ क्योंकि Rabbit दाएँ तालिका में था (अर्थात RIGHT JOIN . के दाईं ओर कीवर्ड)।

यदि हम अपनी क्वेरी में तालिका क्रम को बदलते हैं तो यहां क्या होता है।

SELECT 
    p.PetName,
    pt.PetType
FROM PetTypes pt
RIGHT JOIN Pets p
ON 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)

इस बार Rabbit वापस नहीं किया गया था। ऐसा इसलिए है क्योंकि इसकी तालिका (PetTypes ) शामिल होने के बाईं ओर था।

अगर हमें Rabbit . चाहिए तो हमें इसे लेफ्ट जॉइन या फुल जॉइन में बदलना होगा इस तालिका क्रम का उपयोग करके लौटाया जाना है।

3 टेबल पर राइट जॉइन करें

यहां तीनों टेबल पर राइट जॉइन करने का एक उदाहरण दिया गया है।

SELECT 
    p.PetName,
    pt.PetType,
    CONCAT(o.FirstName, ' ', o.LastName) AS PetOwner
FROM Pets p RIGHT JOIN PetTypes pt 
    ON p.PetTypeId = pt.PetTypeId
RIGHT JOIN Owners o 
    ON p.OwnerId = o.OwnerId;

परिणाम:

+-----------+-----------+----------------+
| PetName   | PetType   | PetOwner       |
|-----------+-----------+----------------|
| Tweet     | Bird      | Homer Connery  |
| Scratch   | Cat       | Bart Pitt      |
| Bark      | Dog       | Bart Pitt      |
| Fluffy    | Cat       | Nancy Simpson  |
| Fetch     | Dog       | Nancy Simpson  |
| Wag       | Dog       | Nancy Simpson  |
| Fluffy    | Dog       | Boris Trump    |
| Meow      | Cat       | Boris Trump    |
| NULL      | NULL      | Woody Eastwood |
+-----------+-----------+----------------+
(9 rows affected)

इस बार हमारे पास एक पालतू जानवर का मालिक है जिसके पास कोई पालतू जानवर नहीं है।

हम फिर से तालिकाओं के क्रम में फेरबदल कर सकते हैं, और हमें एक अलग परिणाम मिलेगा।

SELECT 
    p.PetName,
    pt.PetType,
    CONCAT(o.FirstName, ' ', o.LastName) AS PetOwner
FROM Pets p RIGHT JOIN Owners o 
    ON p.OwnerId = o.OwnerId
RIGHT JOIN PetTypes pt 
    ON p.PetTypeId = pt.PetTypeId;

परिणाम:

+-----------+-----------+---------------+
| PetName   | PetType   | PetOwner      |
|-----------+-----------+---------------|
| Tweet     | Bird      | Homer Connery |
| Fluffy    | Cat       | Nancy Simpson |
| Scratch   | Cat       | Bart Pitt     |
| Meow      | Cat       | Boris Trump   |
| Fetch     | Dog       | Nancy Simpson |
| Wag       | Dog       | Nancy Simpson |
| Fluffy    | Dog       | Boris Trump   |
| Bark      | Dog       | Bart Pitt     |
| NULL      | Rabbit    |               |
+-----------+-----------+---------------+
(9 rows affected)

इस बार हमें अतिरिक्त पालतू प्रकार मिला (Rabbit ), लेकिन अतिरिक्त स्वामी नहीं।

अगर आप सोच रहे हैं कि आखिरी PetOwner . क्यों NULL नहीं है (पिछले की तरह PetName है), ऐसा इसलिए है क्योंकि यह एक स्ट्रिंग संयोजन का परिणाम है। मैंने टी-एसक्यूएल का इस्तेमाल किया CONCAT() स्वामी के प्रथम और अंतिम नामों को जोड़ने का कार्य करता है।


  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. एसक्यूएल कुंजी

  4. isql . में कमांड इतिहास

  5. Alteryx में जावा डेटा के साथ कार्य करना