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

एसक्यूएल सेल्फ जॉइन

यह आलेख SQL में सेल्फ़ जॉइन का एक सिंहावलोकन और साथ ही एक मूल उदाहरण प्रदान करता है।

सेल्फ जॉइन क्या है?

एसक्यूएल SELF JOIN अपने आप में एक तालिका में शामिल हो रहा है। यह एक ही तालिका में पदानुक्रमित डेटा को क्वेरी करने के लिए या एक ही तालिका में पंक्तियों की तुलना करने के लिए उपयोगी हो सकता है।

उदाहरण 1 - सेल्फ़ लेफ्ट जॉइन

कर्मचारी तालिका में स्वयं शामिल होने का एक उत्कृष्ट उदाहरण है। ऐसी तालिका में, एक कर्मचारी दूसरे कर्मचारी को रिपोर्ट कर सकता है। इसलिए, आप अपने कर्मचारी आईडी कॉलम और मैनेजर आईडी कॉलम पर तालिका में शामिल होने के लिए स्वयं शामिल होने का उपयोग कर सकते हैं।

मान लीजिए हमारे पास निम्न तालिका है:

+--------------+-------------+------------+-------------+
| EmployeeId   | FirstName   | LastName   | ReportsTo   |
|--------------+-------------+------------+-------------|
| 1            | Homer       | Connery    | NULL        |
| 2            | Bart        | Pitt       | 1           |
| 3            | Maggie      | Griffin    | 1           |
| 4            | Peter       | Farnsworth | 2           |
| 5            | Marge       | Morrison   | NULL        |
| 6            | Lisa        | Batch      | 5           |
| 7            | Dave        | Zuckerberg | 6           |
| 8            | Vlad        | Cook       | 7           |
+--------------+-------------+------------+-------------+

हम सभी कर्मचारियों और उनके प्रबंधकों को वापस करने के लिए इस टेबल पर सेल्फ लेफ्ट जॉइन कर सकते हैं।

SELECT
    CONCAT(e1.FirstName, ' ', e1.LastName) AS Employee,
    CONCAT(e2.FirstName, ' ', e2.LastName) AS Manager
FROM Employees e1
LEFT JOIN Employees e2 
ON e1.ReportsTo = e2.EmployeeId;

परिणाम:

+------------------+-----------------+
| Employee         | Manager         |
|------------------+-----------------|
| Homer Connery    |                 |
| Bart Pitt        | Homer Connery   |
| Maggie Griffin   | Homer Connery   |
| Peter Farnsworth | Bart Pitt       |
| Marge Morrison   |                 |
| Lisa Batch       | Marge Morrison  |
| Dave Zuckerberg  | Lisa Batch      |
| Vlad Cook        | Dave Zuckerberg |
+------------------+-----------------+

होमर कॉनरी और मार्ज मॉरिसन किसी को रिपोर्ट नहीं करते हैं और इसलिए उनके Manager क्षेत्र रिक्त है। दरअसल, यह NULL होगा अगर मैंने दो स्तंभों पर एक स्ट्रिंग संयोजन नहीं किया होता।

उदाहरण 2 - सेल्फ इनर जॉइन

अगर हम नहीं चाहते थे कि दो हेड हॉनचो वापस आ जाएं, तो हम टेबल पर इनर जॉइन कर सकते हैं। यह उन सभी पंक्तियों को समाप्त कर देगा जिनका दोनों तालिकाओं में मिलान नहीं है (अर्थात वे कर्मचारी जिनके पास संबंधित प्रबंधक नहीं है और इसके विपरीत)।

SELECT
    CONCAT(e1.FirstName, ' ', e1.LastName) AS Employee,
    CONCAT(e2.FirstName, ' ', e2.LastName) AS Manager
FROM Employees e1
INNER JOIN Employees e2 
ON e1.ReportsTo = e2.EmployeeId;

परिणाम:

+------------------+-----------------+
| Employee         | Manager         |
|------------------+-----------------|
| Bart Pitt        | Homer Connery   |
| Maggie Griffin   | Homer Connery   |
| Peter Farnsworth | Bart Pitt       |
| Lisa Batch       | Marge Morrison  |
| Dave Zuckerberg  | Lisa Batch      |
| Vlad Cook        | Dave Zuckerberg |
+------------------+-----------------+

उदाहरण 3 - सेल्फ़ राइट जॉइन

अगर हम सेल्फ राइट जॉइन करना चाहते हैं, तो हमें क्वेरी में कुछ कॉलमों को फेरबदल करना होगा।

SELECT
    CONCAT(e1.FirstName, ' ', e1.LastName) AS Manager,
    CONCAT(e2.FirstName, ' ', e2.LastName) AS Employee
FROM Employees e1
RIGHT JOIN Employees e2
ON e1.EmployeeId = e2.ReportsTo;

परिणाम:

+-----------------+------------------+
| Manager         | Employee         |
|-----------------+------------------|
|                 | Homer Connery    |
| Homer Connery   | Bart Pitt        |
| Homer Connery   | Maggie Griffin   |
| Bart Pitt       | Peter Farnsworth |
|                 | Marge Morrison   |
| Marge Morrison  | Lisa Batch       |
| Lisa Batch      | Dave Zuckerberg  |
| Dave Zuckerberg | Vlad Cook        |
+-----------------+------------------+

  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. SQL डेटा प्रकारों को समझना - आप सभी को SQL डेटा प्रकारों के बारे में जानना आवश्यक है

  3. न्यूल ऑन न्यूल इनपुट के साथ यूडीएफ के प्रदर्शन में सुधार करें

  4. AWS RDS में सामान्य लॉग और त्रुटि लॉग को कैसे सक्षम करें

  5. वर्डप्रेस - परदे के पीछे, भाग 1