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

SQLite सेल्फ-जॉइन

सारांश :इस ट्यूटोरियल में, आप एक विशेष प्रकार के जॉइन के बारे में जानेंगे जिसे 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 सेल्फ-जॉइन तकनीक का उपयोग कैसे करें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite - एक डेटाबेस बनाएँ

  2. Android में Proguard और SQLcipher का उपयोग करने का प्रयास करते समय NoClassDefFoundError प्राप्त करना

  3. SQLite में महीने का पहला, दूसरा, तीसरा या चौथा सोमवार प्राप्त करें

  4. Android पर SQLite में क्वेरी समय लॉग करें

  5. SQLite JSON_GROUP_ARRAY ()