De foutmelding die u krijgt, vertelt u dat de kolom CategoryID in je WHERE clausule dubbelzinnig is, wat betekent dat het systeem een probleem heeft om de juiste kolom te identificeren omdat er meerdere CategoryID zijn kolommen.
Om dit probleem op te lossen, gebruikt u de alias om aan te geven welke kolom u wilt gebruiken voor uw WHERE clausule:
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
Ik heb de query ook een beetje gewijzigd om hetzelfde resultaat te krijgen, maar in plaats van een combinatie van LEFT JOIN te gebruiken + IN clausule + subquery, ik gebruikte INNER JOIN clausules.Met deze zoekopdracht hoeft u alleen uw gewenste CategoryID te definiëren één keer en het krijgt automatisch alle onderliggende categorieën.
Ik weet niet zeker of uw zoekopdracht correct wordt uitgevoerd, omdat u de COUNT . gebruikt functie zonder de resultaten te groeperen op CategoryID ...
Ik hoop dat dit je zal helpen.