Грешката, която получавате, ви казва, че колоната 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
...
Надявам се това да ви помогне.