आपको मिलने वाली त्रुटि बताती है कि कॉलम CategoryID
आपके WHERE
. में क्लॉज अस्पष्ट है, इसका मतलब है कि सिस्टम को उपयुक्त कॉलम की पहचान करने में समस्या है क्योंकि कई CategoryID
हैं कॉलम।
इस समस्या को ठीक करने के लिए, उपनाम का उपयोग करके निर्दिष्ट करें कि आप अपने WHERE
के लिए किस कॉलम का उपयोग करना चाहते हैं खंड:
SELECT cat2.CategoryID AS CategoryID
,cat2.Name AS CategoryName
,COUNT(p.ProductID) AS CountProducts
FROM Category AS cat
INNER JOIN Category AS cat2 ON cat2.ParrentCategoryID = cat.CategoryID
INNER JOIN Products AS p ON p.CategoryID = cat2.CategoryID
WHERE cat.CategoryID = '876'
GROUP BY cat2.CategoryID, cat2.Name
ORDER BY cat2.Name
मैंने वही परिणाम प्राप्त करने के लिए क्वेरी को थोड़ा बदल दिया लेकिन LEFT JOIN
के संयोजन का उपयोग करने के बजाय + IN
क्लॉज + सब क्वेरी, मैंने इस्तेमाल किया INNER JOIN
खंड। इस क्वेरी के साथ आपको केवल अपना वांछित CategoryID
. परिभाषित करने की आवश्यकता है एक बार और यह स्वचालित रूप से प्रत्येक बच्चे की श्रेणियां प्राप्त कर लेगा।
मुझे यकीन नहीं है कि आपकी क्वेरी सही ढंग से चलती है क्योंकि आप COUNT
. का उपयोग कर रहे हैं परिणामों को CategoryID
. द्वारा समूहीकृत किए बिना कार्य करें ...
आशा है कि यह आपकी मदद करेगा।