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

Esakyu Ela Selpha Jo Ina



रिलेशनल डेटाबेस की सबसे प्रसिद्ध विशेषता में से एक जॉइन है। जॉइन रिलेशनल डेटाबेस की सबसे शक्तिशाली और जटिल विशेषताओं में से एक है। वे प्रदर्शन से समझौता किए बिना डेटाबेस तालिकाओं के बीच व्यापक मॉड्यूलरिटी और बहुत जटिल संबंधों की अनुमति देते हैं।

हालाँकि, SQL में एक प्रकार का जुड़ाव होता है जो रडार के नीचे चला जाता है जिसे सेल्फ-जॉइन के रूप में जाना जाता है।

SQL में, सेल्फ-जॉइन एक शक्तिशाली तकनीक है जो हमें एक ही तालिका के भीतर संबंधित कॉलम के आधार पर एक ही तालिका से पंक्तियों को संयोजित करने की अनुमति देती है।







SQL में अन्य प्रकार के जॉइन के विपरीत, जहां हम कई टेबलों से डेटा लेते हैं, सेल्फ-जॉइन एक ही टेबल पर काम करता है।



आप आश्चर्यचकित हो सकते हैं कि जब मैं तालिका से ही डेटा देख सकता हूं तो मुझे स्वयं-ज्वाइन की आवश्यकता क्यों है? हालाँकि यह सच हो सकता है, जब आपको पुनरावर्ती डेटा क्वेरी करने या पदानुक्रमित डेटा खोजने की आवश्यकता होती है, तो सेल्फ-जॉइन कार्यों में मदद कर सकता है।



अनिवार्य रूप से, सेल्फ-जॉइन एक मौलिक भूमिका निभाता है जहां आपको एक ही तालिका की पंक्तियों की तुलना करने की आवश्यकता होती है।





इस पोस्ट में हमारे साथ जुड़ें क्योंकि हम जानेंगे कि सेल्फ-जॉइन क्या हैं, वे कैसे काम करते हैं, और हम उन्हें SQL तालिका में कैसे उपयोग कर सकते हैं।

ध्यान दें: इससे पहले कि हम आगे बढ़ें, हम प्रदर्शन उद्देश्यों के लिए एक बुनियादी तालिका स्थापित करेंगे। हालाँकि, आपको लगता है कि आप किसी समर्थित डेटासेट का उपयोग कर सकते हैं।



नमूना डेटा

निम्नलिखित क्वेरीज़ उत्पाद जानकारी वाली एक मूल तालिका बनाती हैं और तालिका में नमूना रिकॉर्ड सम्मिलित करती हैं। यह हमें यह प्रदर्शित करने की अनुमति देता है कि SQL में सेल्फ-जॉइन के साथ कैसे काम किया जाए।

टेबल उत्पाद बनाएं (
product_id INT प्राथमिक कुंजी,
उत्पाद_नाम VARCHAR(255) शून्य नहीं,
पेरेंट_आईडी आईएनटी
);

तालिका में 10 नमूना रिकॉर्ड जोड़ें.

उत्पादों (उत्पाद_आईडी, उत्पाद_नाम, पेरेंट_आईडी) मानों में सम्मिलित करें
(1, 'इलेक्ट्रॉनिक्स', शून्य),
(2, 'स्मार्टफ़ोन', 1),
(3, 'लैपटॉप', 1),
(4, 'आईफोन 13', 2),
(5, 'सैमसंग गैलेक्सी एस21', 2),
(6, 'मैकबुक प्रो', 3),
(7, 'डेल एक्सपीएस 15', 3),
(8, 'सहायक उपकरण', शून्य),
(9, 'फ़ोन केस', 8),
(10, 'लैपटॉप बैग', 8);

परिणामी तालिका इस प्रकार है:

उदाहरण 1: बेसिक सेल्फ-जॉइन

आइए एक बुनियादी स्व-ज्वाइन से शुरुआत करें। उदाहरण के लिए, हम एक ही तालिका के अभिभावक-बच्चे के रिश्ते को पुनः प्राप्त करने के लिए एक सरल स्व-ज्वाइन का उपयोग कर सकते हैं।

उदाहरण के लिए, हम इसका उपयोग सभी उत्पादों और उनके संबंधित मूल उत्पादों को खोजने के लिए कर सकते हैं। हम एक क्वेरी इस प्रकार चला सकते हैं:

c.product_name AS child_product, p.product_name AS मूल_product चुनें
उत्पादों से सी
c.parent_id = p.product_id पर लेफ्ट जॉइन प्रोडक्ट्स p;

दिए गए उदाहरण क्वेरी में, हम उत्पाद तालिका के लिए उपनाम के रूप में 'सी' का उपयोग करते हैं जो चाइल्ड उत्पादों का प्रतिनिधित्व करता है।

हम मूल उत्पादों का प्रतिनिधित्व करने के लिए उत्पाद तालिका के लिए 'पी' उपनाम भी बनाते हैं।

अगले चरण में, हम यह सुनिश्चित करने के लिए एक बुनियादी SQL LEFT JOIN का उपयोग करते हैं कि परिणाम में शीर्ष-स्तरीय उत्पाद शामिल हैं।

अंत में, हम 'parent_id' और 'product_id' कॉलम का उपयोग करके बच्चे और माता-पिता के रिकॉर्ड के बीच संबंध बनाने के लिए ON क्लॉज का उपयोग करते हैं।

परिणामी तालिका इस प्रकार है:

आप देखेंगे कि मूल उत्पादों में शीर्ष लिंक नहीं है क्योंकि वे पदानुक्रम के शीर्ष पर हैं जिन्हें मूल तत्वों के रूप में भी जाना जाता है।

उदाहरण 2: एक पदानुक्रमित डेटा प्राप्त करें

सेल्फ-जॉइन की सबसे बुनियादी भूमिकाओं में से एक पदानुक्रमित डेटा पुनर्प्राप्त करना है। उदाहरण के लिए, मान लीजिए कि हम सभी चाइल्ड उत्पादों को पुनः प्राप्त करना चाहते हैं जहां उत्पाद 'एक्सेसरीज़' के बराबर है। हम सेल्फ-जॉइन का उपयोग करके क्वेरी को निम्नानुसार चला सकते हैं:

c.product_name को child_product के रूप में चुनें
उत्पादों से सी
c.parent_id = p.product_id पर उत्पाद p से जुड़ें
जहाँ p.product_name = 'सहायक उपकरण';

इस मामले में, हम उत्पाद तालिका को अपने साथ संयोजित करने के लिए JOIN का उपयोग करते हैं और फिर अपने इच्छित परिणामों को फ़िल्टर करने के लिए WHERE क्लॉज का उपयोग करते हैं।

निष्कर्ष

इस ट्यूटोरियल में, हमने पता लगाया कि सेल्फ-जॉइन क्या है, यह कैसे काम करता है, और हम इसे SQL तालिका में पदानुक्रमित डेटा पुनर्प्राप्त करने या पुनरावर्ती क्वेरी करने के लिए कैसे उपयोग कर सकते हैं।