मॉड्यूल पाठ (3/4)
बाहरी जुड़ाव: "अंतराल" ढूंढना
मॉड्यूल 3 में आपने LEFT JOIN देखा: सभी पंक्तियों को बाईं ओर रखें, यहां तक कि उन्हें भी
दाहिनी ओर मिलान के बिना (जो NULL बन जाता है)। इस अध्याय में हम
RIGHT JOIN और FULL OUTER JOIN के साथ टूलकिट का विस्तार करें, और हम सीखते हैं
डेटा में "छेद" खोजने के लिए उनका उपयोग कैसे करें: एक तालिका में पंक्तियाँ
दूसरे में कोई समकक्ष नहीं है.
बाहरी जोड़ तीन प्रकार के होते हैं
A LEFT JOIN B ON … -- tutte le righe di A, con o senza match in B
A RIGHT JOIN B ON … -- tutte le righe di B, con o senza match in A
A FULL JOIN B ON … -- tutte le righe di A *e* di B; NULL dove non c'è matchA RIGHT JOIN B को हमेशा उसी के साथ B LEFT JOIN A के रूप में फिर से लिखा जा सकता है
ON: यह पठनीयता का मामला है। कई शैलियाँ (इस पाठ्यक्रम सहित)
निरंतरता के लिए हमेशा LEFT JOIN का उपयोग करना पसंद करें।
"एंटी-जॉइन" पैटर्न: लापता लोगों को ढूंढना
LEFT JOIN का सबसे आम उपयोग "डेटा को समृद्ध करना" नहीं है
दाएँ", लेकिन बाईं ओर की पंक्तियाँ ढूंढें जिनका मिलान नहीं है
सही. इसे एंटी-जॉइन कहा जाता है:
-- Prodotti senza nessuna recensione:
SELECT p.id, p.name
FROM products p
LEFT JOIN reviews r ON r.product_id = p.id
WHERE r.id IS NULL
ORDER BY p.id;पैटर्न तर्क:
LEFT JOINप्रत्येक उत्पाद की समीक्षा, यदि कोई हो, संलग्न करता है;- बिना समीक्षा वाले उत्पादों के लिए, सभी
rकॉलमNULLहैं; WHERE r.id IS NULLकेवल उन्हीं उत्पादों को रखता है।
कुंजी जांच: दाहिनी ओर की तालिका के नॉट न्यूल कॉलम पर एक id IS NULL
इसका मतलब है "कोई मेल नहीं था"। आप अक्सर दाहिने हाथ के पीके पर फ़िल्टर करते हैं
तालिका ठीक इसी कारण से।
पूर्ण बाहरी जोड़
FULL OUTER JOIN दोनों पक्षों को बिना मिलान के रखता है। इसका प्रयोग बहुत कम होता है,
आम तौर पर डेटा अखंडता जांच के लिए:
SELECT c.id AS customer_id, o.id AS order_id
FROM customers c
FULL OUTER JOIN orders o ON o.customer_id = c.id
WHERE c.id IS NULL OR o.id IS NULL;c.id IS NULL वाली पंक्तियाँ अनाथ ऑर्डर होंगी (एक customer_id जो
customers में मौजूद नहीं है)। o.id IS NULL वाले ग्राहक हैं
बिना आदेश के. हमारे डेटासेट पर विदेशी कुंजियाँ गारंटी देती हैं कि कोई अनाथ नहीं होगा
आदेश मौजूद हैं; केवल बिना ऑर्डर वाले ग्राहक ही बचे हैं।
खुद कोशिश करना
मेरे पास जो कुछ भी है वह सिर्फ एक समीक्षा के लिए नहीं है। मोस्ट्रा सोलो ला कोलोना नाम। प्रति नाम ऑर्डिना.
संकेत दिखाएँ
पैटर्न एंटी-जॉइन: लेफ्ट जॉइन समीक्षाएँ su product_id, poi जहाँ r.id शून्य है।
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
मेरे ग्राहकों में से कोई भी अभी भी काम नहीं कर रहा है। मोस्ट्रा ईमेल. प्रति ईमेल ऑर्डिना.
संकेत दिखाएँ
स्टेसो पैटर्न डेल'एसेर्सिज़ियो मिसाल, मा फ्रा कस्टमर्स एंड ऑर्डर्स।
3 प्रयासों के बाद समाधान उपलब्ध है