मुख्य सामग्री पर जाएं
मॉड्यूल 5 · पाठ 3 का 4पाठ्यक्रम में 19/57~10 min
मॉड्यूल पाठ (3/4)

बाहरी जुड़ाव: "अंतराल" ढूंढना

मॉड्यूल 3 में आपने LEFT JOIN देखा: सभी पंक्तियों को बाईं ओर रखें, यहां तक कि उन्हें भी दाहिनी ओर मिलान के बिना (जो NULL बन जाता है)। इस अध्याय में हम RIGHT JOIN और FULL OUTER JOIN के साथ टूलकिट का विस्तार करें, और हम सीखते हैं डेटा में "छेद" खोजने के लिए उनका उपयोग कैसे करें: एक तालिका में पंक्तियाँ दूसरे में कोई समकक्ष नहीं है.

बाहरी जोड़ तीन प्रकार के होते हैं

SQL
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'è match

A RIGHT JOIN B को हमेशा उसी के साथ B LEFT JOIN A के रूप में फिर से लिखा जा सकता है ON: यह पठनीयता का मामला है। कई शैलियाँ (इस पाठ्यक्रम सहित) निरंतरता के लिए हमेशा LEFT JOIN का उपयोग करना पसंद करें।

"एंटी-जॉइन" पैटर्न: लापता लोगों को ढूंढना

LEFT JOIN का सबसे आम उपयोग "डेटा को समृद्ध करना" नहीं है दाएँ", लेकिन बाईं ओर की पंक्तियाँ ढूंढें जिनका मिलान नहीं है सही. इसे एंटी-जॉइन कहा जाता है:

SQL
-- 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;

पैटर्न तर्क:

  1. LEFT JOIN प्रत्येक उत्पाद की समीक्षा, यदि कोई हो, संलग्न करता है;
  2. बिना समीक्षा वाले उत्पादों के लिए, सभी r कॉलम NULL हैं;
  3. WHERE r.id IS NULL केवल उन्हीं उत्पादों को रखता है।

कुंजी जांच: दाहिनी ओर की तालिका के नॉट न्यूल कॉलम पर एक id IS NULL इसका मतलब है "कोई मेल नहीं था"। आप अक्सर दाहिने हाथ के पीके पर फ़िल्टर करते हैं तालिका ठीक इसी कारण से।

पूर्ण बाहरी जोड़

FULL OUTER JOIN दोनों पक्षों को बिना मिलान के रखता है। इसका प्रयोग बहुत कम होता है, आम तौर पर डेटा अखंडता जांच के लिए:

SQL
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 वाले ग्राहक हैं बिना आदेश के. हमारे डेटासेट पर विदेशी कुंजियाँ गारंटी देती हैं कि कोई अनाथ नहीं होगा आदेश मौजूद हैं; केवल बिना ऑर्डर वाले ग्राहक ही बचे हैं।

खुद कोशिश करना

व्यायाम#sql.m5.l3.e1
प्रयास: 0लोड हो रहा है...

मेरे पास जो कुछ भी है वह सिर्फ एक समीक्षा के लिए नहीं है। मोस्ट्रा सोलो ला कोलोना नाम। प्रति नाम ऑर्डिना.

संपादक लोड हो रहा है...
संकेत दिखाएँ

पैटर्न एंटी-जॉइन: लेफ्ट जॉइन समीक्षाएँ su product_id, poi जहाँ r.id शून्य है।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#sql.m5.l3.e2
प्रयास: 0लोड हो रहा है...

मेरे ग्राहकों में से कोई भी अभी भी काम नहीं कर रहा है। मोस्ट्रा ईमेल. प्रति ईमेल ऑर्डिना.

संपादक लोड हो रहा है...
संकेत दिखाएँ

स्टेसो पैटर्न डेल'एसेर्सिज़ियो मिसाल, मा फ्रा कस्टमर्स एंड ऑर्डर्स।

3 प्रयासों के बाद समाधान उपलब्ध है