Otrzymany błąd informuje, że kolumna CategoryID
w swoim WHERE
klauzula jest niejednoznaczna, co oznacza, że system ma problem z identyfikacją odpowiedniej kolumny, ponieważ istnieje wiele CategoryID
kolumny.
Aby rozwiązać ten problem, użyj aliasu, aby określić, której kolumny chcesz użyć dla swojego WHERE
klauzula:
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
Zmieniłem również nieco zapytanie, aby uzyskać ten sam wynik, ale zamiast używać kombinacji LEFT JOIN
+ IN
klauzula + zapytanie podrzędne, użyłem INNER JOIN
klauzul.W tym zapytaniu wystarczy zdefiniować żądany CategoryID
raz i automatycznie otrzyma wszystkie kategorie podrzędne.
Nie jestem pewien, czy Twoje zapytanie działa poprawnie, ponieważ używasz COUNT
funkcja bez grupowania wyników według CategoryID
...
Mam nadzieję, że to ci pomoże.