Fejlen du får fortæller dig, at kolonnen CategoryID
i din WHERE
klausulen er tvetydig, det betyder, at systemet har et problem med at identificere den relevante kolonne, fordi der er flere CategoryID
kolonner.
For at løse dette problem skal du bruge aliaset til at angive, hvilken kolonne du vil bruge til din WHERE
klausul:
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
Jeg ændrede også en smule forespørgslen for at få det samme resultat, men i stedet for at bruge en kombination af LEFT JOIN
+ IN
klausul + underforespørgsel, jeg brugte INNER JOIN
klausuler. Med denne forespørgsel behøver du kun at definere dit ønskede CategoryID
én gang, og det vil automatisk få alle børnekategorier.
Jeg er ikke sikker på, at din forespørgsel kører korrekt, fordi du bruger COUNT
funktion uden at gruppere resultaterne efter CategoryID
...
Håber dette vil hjælpe dig.