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.