Chyba, která se zobrazí, vám sděluje, že sloupec CategoryID
ve vašem WHERE
klauzule je nejednoznačná, to znamená, že systém má problém identifikovat příslušný sloupec, protože existuje více CategoryID
sloupce.
Chcete-li tento problém vyřešit, použijte alias k určení, který sloupec chcete použít pro WHERE
klauzule:
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
Také jsem trochu změnil dotaz, abych získal stejný výsledek, ale místo použití kombinace LEFT JOIN
+ IN
klauzule + dílčí dotaz, použil jsem INNER JOIN
clauses.S tímto dotazem stačí definovat požadované CategoryID
jednou a automaticky získá všechny podřízené kategorie.
Nejsem si jistý, zda váš dotaz běží správně, protože používáte COUNT
fungovat bez seskupování výsledků podle CategoryID
...
Doufám, že vám to pomůže.