यह कुछ डिज़ाइनों के लिए पूरी तरह से वैध समाधान है।
मान लें कि आपके पास Customer
. जैसे एक-से-अनेक संबंधों का पदानुक्रम है - Order
- Basket
- Item
- Price
, आदि, जिसे किसी भी स्तर पर भरा जा सकता है:एक Customer
कोई Order
नहीं हो सकता है , एक Order
कोई Basket
नहीं हो सकता है , आदि.
इस मामले में आप कुछ इस तरह जारी करते हैं:
SELECT *
FROM Customer c
LEFT OUTER JOIN
Order o
ON o.CustomerID = c.ID
LEFT OUTER JOIN
Basket b
ON b.OrderID = c.ID
…
ध्यान दें कि यह कुछ मामलों में अक्षम हो सकता है, और इसे EXISTS
. से बदला जा सकता है या NOT EXISTS
(यदि आप केवल यह पता लगाना चाहते हैं कि संबंधित रिकॉर्ड मौजूद हैं या अन्य तालिकाओं में मौजूद नहीं हैं)।
प्रदर्शन विवरण के लिए मेरे ब्लॉग में यह लेख देखें:
- अपूर्ण ऑर्डर ढूंढना
-
LEFT JOIN
को रिप्लेस करने से कैसे फायदा होगा? के साथNOT EXISTS
. है