अगर हालत में झूठ बोलना गलत है, तो इसे छोड़ने के बजाए इसे कैसे कम करें? - एसक्यूएल

यदि शर्त छोड़ें तो गलत है, इसे कैसे छोड़ें इसके बजाय इसे शून्य बनायें यह कोड का हिस्सा है:

SELECT
c.Name,
p.Name
FROM Category c
LEFT JOIN ProductCategory pc ON c.CategoryID = pc.CategoryID
LEFT JOIN Product p ON pc.ProductID = p.ProductID
WHERE pc.ProductID = 17;

परिणाम होना चाहिए:

FirstCategory SeventeenProduct
SecondCategory SeventeenProduct
ThirdCategory null
FourthCategory SeventeenProduct

और इसी तरह

उत्तर:

उत्तर № 1 के लिए 1

आउटर जॉइन आपको मेन टेबल से सभी रिकॉर्ड और ज्वाइन टेबल से मैचिंग रिकॉर्ड देगा। आप भी हालत से हटना चाहते हैं where सेवा मेरे join on हालत अन्य प्रभाव के रूप में ही होगा inner join

SELECT
c.Name,
p.Name
FROM Category c
LEFT JOIN ProductCategory pc ON c.CategoryID = pc.CategoryID
AND pc.ProductID = 17
LEFT JOIN Product p ON pc.ProductID = p.ProductID;

जवाब के लिए 0 № 2

ईमानदार होने के लिए, मैं क्वेरी का उपयोग करके लिखूंगा p.ProductId:

SELECT c.Name, p.Name
FROM Category c LEFT JOIN
ProductCategory pc
ON c.CategoryID = pc.CategoryID LEFT JOIN
Product p
ON pc.ProductID = p.ProductID AND p.ProductID = 17;

यह कार्यात्मक रूप से ठीक उसी तरह है जैसे पहले में 17 की तुलना में ON। हालाँकि, मुझे इस संस्करण का अनुसरण करना आसान लगता है।


संबंधित सवाल
सबसे लोकप्रिय