सारांश :इस ट्यूटोरियल में, आप एक विशेष प्रकार के जॉइन के बारे में जानेंगे जिसे SQLite सेल्फ-जॉइन कहा जाता है, जो आपको टेबल को खुद से जॉइन करने की अनुमति देता है।
ध्यान दें कि आपको INNER JOIN
. से परिचित होना चाहिए और LEFT JOIN
इस ट्यूटोरियल के साथ आगे बढ़ने से पहले क्लॉज।
SQLite सेल्फ-जॉइन का परिचय
सेल्फ़-जॉइन एक विशेष प्रकार का जॉइन है जो आपको LEFT JOIN
में से किसी एक का उपयोग करके एक टेबल को खुद से जोड़ने की अनुमति देता है। या INNER JOIN
खंड। आप परिणाम सेट बनाने के लिए सेल्फ़-जॉइन का उपयोग करते हैं जो पंक्तियों को उसी तालिका में अन्य पंक्तियों के साथ जोड़ता है।
चूंकि आप किसी क्वेरी में एक ही तालिका को एक से अधिक संदर्भित नहीं कर सकते हैं, इसलिए जब आप सेल्फ़-जॉइन का उपयोग करते हैं, तो आपको तालिका को एक अलग नाम निर्दिष्ट करने के लिए तालिका उपनाम का उपयोग करने की आवश्यकता होती है।
सेल्फ-जॉइन एक ही टेबल में समान या अलग-अलग कॉलम के मानों की तुलना करता है। सेल्फ-जॉइन में केवल एक टेबल शामिल है।
आप अक्सर तालिका में संग्रहीत माता-पिता/बाल संबंधों को क्वेरी करने के लिए या चल रहे कुल योग प्राप्त करने के लिए स्वयं-जुड़ने का उपयोग करते हैं।
SQLite सेल्फ-जॉइन उदाहरण
हम employees
. का उपयोग करेंगे प्रदर्शन के लिए नमूना डेटाबेस में तालिका।
employees
टेबल न केवल कर्मचारी डेटा बल्कि संगठनात्मक डेटा भी संग्रहीत करता है। ReportsTo
कॉलम कर्मचारियों के बीच रिपोर्टिंग संबंध निर्दिष्ट करता है।
यदि कोई कर्मचारी किसी प्रबंधक को रिपोर्ट करता है, तो ReportsTo
. का मान कर्मचारी की पंक्ति का कॉलम EmployeeId
. के मान के बराबर है प्रबंधक की पंक्ति का स्तंभ। यदि कोई कर्मचारी किसी को रिपोर्ट नहीं करता है, तो ReportsTo
कॉलम NULL
है ।
कौन किसकी प्रत्यक्ष रिपोर्ट है, इसकी जानकारी प्राप्त करने के लिए, आप निम्नलिखित कथन का उपयोग करते हैं:
SELECT m.firstname || ' ' || m.lastname AS 'Manager',
e.firstname || ' ' || e.lastname AS 'Direct report'
FROM employees e
INNER JOIN employees m ON m.employeeid = e.reportsto
ORDER BY manager;
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
स्टेटमेंट में INNER JOIN
का इस्तेमाल किया गया है employees
में शामिल होने के लिए क्लॉज खुद को। employees
तालिका की दो भूमिकाएँ हैं:कर्मचारी और प्रबंधक।
क्योंकि हमने INNER JOIN
. का उपयोग किया है employees
में शामिल होने के लिए क्लॉज तालिका में, परिणाम सेट में वह पंक्ति नहीं होती जिसके प्रबंधक कॉलम में NULL
होता है मूल्य।
ध्यान दें कि कॉन्सटेनेशन ऑपरेटर ||
एकाधिक स्ट्रिंग्स को एक स्ट्रिंग में जोड़ता है। उदाहरण में, हम प्रथम नाम, स्थान और अंतिम नाम को जोड़कर कर्मचारियों के पूर्ण नाम से संयोजन ऑपरेटर का उपयोग करते हैं।
यदि आप उस सीईओ से पूछना चाहते हैं जो किसी को रिपोर्ट नहीं करता है, तो आपको INNER JOIN
बदलना होगा। LEFT JOIN
का खंड उपरोक्त प्रश्न में खंड।
Andrew Adams
सीईओ हैं क्योंकि वह किसी को रिपोर्ट नहीं करते हैं।
आप निम्न क्वेरी के रूप में उसी शहर में स्थित कर्मचारियों को खोजने के लिए सेल्फ-जॉइन तकनीक का उपयोग कर सकते हैं:
SELECT DISTINCT
e1.city,
e1.firstName || ' ' || e1.lastname AS fullname
FROM
employees e1
INNER JOIN employees e2 ON e2.city = e1.city
AND (e1.firstname <> e2.firstname AND e1.lastname <> e2.lastname)
ORDER BY
e1.city;
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
शामिल होने की स्थिति में दो भाव होते हैं:
e1.city = e2.city
यह सुनिश्चित करने के लिए कि दोनों कर्मचारी एक ही शहर में स्थित हैंe.firstname <> e2.firstname AND e1.lastname <> e2.lastname
यह सुनिश्चित करने के लिए किe1
औरe2
इस धारणा के साथ एक ही कर्मचारी नहीं हैं कि ऐसे कर्मचारी नहीं हैं जिनका पहला नाम और उपनाम समान है।
इस ट्यूटोरियल में, हमने आपको दिखाया है कि किसी तालिका को स्वयं से जोड़ने के लिए SQLite सेल्फ-जॉइन तकनीक का उपयोग कैसे करें।