sql - आंतरिक जुड़ने और बाहरी जुड़ने के बीच क्या अंतर है




join (5)

इस प्रश्न का उत्तर यहां दिया गया है:

आंतरिक और बाहरी शामिल होने के बीच अंतर। मैं दो टेबल का उपयोग कर रहा हूं और दोनों टेबल से डेटा लाने के लिए चाहता हूं ताकि किस प्रकार शामिल हो, हमें इसका इस्तेमाल करना चाहिए कि हम अपनी समस्या का समाधान कर सकते हैं


Answers

अंदरूनी कुंजियों पर मिलान तालिकाओं में शामिल हों, लेकिन बाहरी रूप से एक तरफ मैचों की कुंजी में शामिल हों। उदाहरण के लिए जब आप बाएं बाहरी का उपयोग करते हैं तो क्वेरी में बाएं तरफ की मेज आती है और बाएं टेबल प्राथमिक कुंजी पर दाईं तरफ मिलती है और जहां मिलान किए गए स्थान शून्य नहीं होते हैं।


आंतरिक जुड़ाव - समकक्ष प्रश्नों में से किसी एक का उपयोग करने में शामिल होने वाला आंतरिक दो टेबलों का चौराहे देता है, यानी वे दो पंक्तियां आम हैं।
बाएं बाहरी जुड़ाव - एक बायां बाहरी जुड़ाव ए में सभी पंक्तियां देगा, साथ ही बी में किसी भी आम पंक्तियां।
पूर्ण बाहरी जुड़ाव - एक पूर्ण बाहरी जुड़ाव आपको ए और बी का संघ देगा, यानी ए में सभी पंक्तियां और बी में सभी पंक्तियां। यदि ए में कुछ बी में संबंधित डेटाम नहीं है, तो बी भाग है शून्य, और इसके विपरीत। इसे जांचें


अंदरूनी जॉइन: दोनों पंक्तियों में कम से कम एक मैच होने पर सभी पंक्तियां लौटाती हैं

बाएं जॉइन: बाएं टेबल से सभी पंक्तियां, और दाएं तालिका से मेल खाने वाली पंक्तियां लौटें

सही जॉइन: दाएं टेबल से सभी पंक्तियों को वापस करें, और बाएं टेबल से मेल खाने वाली पंक्तियां

पूर्ण जॉइन: टेबल में से एक में एक मैच होने पर सभी पंक्तियां वापस करें

उम्मीद है इससे आपको मदद मिलेगी


जुड़ने को समझने का यह सबसे अच्छा और सरल तरीका है:

क्रेडिट इस लेख के लेखक के पास जाते हैं


एडजेंसी मॉडल + नेस्टेड सेट मॉडल

मैं इसके लिए गया क्योंकि मैं पेड़ में आसानी से नए आइटम डाल सकता हूं (आपको बस एक नई वस्तु डालने के लिए शाखा की आईडी चाहिए) और यह भी बहुत तेज़ी से पूछताछ करें।

+-------------+----------------------+--------+-----+-----+
| category_id | name                 | parent | lft | rgt |
+-------------+----------------------+--------+-----+-----+
|           1 | ELECTRONICS          |   NULL |   1 |  20 |
|           2 | TELEVISIONS          |      1 |   2 |   9 |
|           3 | TUBE                 |      2 |   3 |   4 |
|           4 | LCD                  |      2 |   5 |   6 |
|           5 | PLASMA               |      2 |   7 |   8 |
|           6 | PORTABLE ELECTRONICS |      1 |  10 |  19 |
|           7 | MP3 PLAYERS          |      6 |  11 |  14 |
|           8 | FLASH                |      7 |  12 |  13 |
|           9 | CD PLAYERS           |      6 |  15 |  16 |
|          10 | 2 WAY RADIOS         |      6 |  17 |  18 |
+-------------+----------------------+--------+-----+-----+
  • हर बार जब आपको किसी भी माता-पिता के सभी बच्चों की ज़रूरत होती है तो आप केवल parent कॉलम से पूछताछ करते हैं।
  • यदि आपको किसी भी माता-पिता के सभी वंशजों की आवश्यकता होती है, तो आप उन वस्तुओं के लिए पूछताछ करते हैं जिनके माता-पिता के lft और lft बीच उनकी lft होती है।
  • यदि आपको पेड़ की जड़ तक किसी भी नोड के सभी माता-पिता की आवश्यकता होती है, तो आप नोड के lft से कम lft वाले lft के लिए lft और नोड के lft से बड़ा lft और parent द्वारा क्रमबद्ध करते हैं।

मुझे आवेषण से तेज पेड़ तक पहुंचने और पूछताछ करने की ज़रूरत थी, इसलिए मैंने इसे चुना

नई चीजें डालने पर left और right कॉलम को ठीक करना एकमात्र समस्या है। अच्छी तरह से मैंने इसके लिए एक संग्रहीत प्रक्रिया बनाई और इसे हर बार बुलाया जब मैंने एक नया आइटम डाला जो मेरे मामले में दुर्लभ था लेकिन यह वास्तव में तेज़ है। मुझे जो सेल्को की किताब से विचार मिला, और संग्रहीत प्रक्रिया और मैं इसके साथ कैसे आया, यहां डीबीए एसई में सूचीबद्ध किया गया है https://dba.stackexchange.com/q/89051/41481





sql join