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.