Felet du får talar om för dig att kolumnen CategoryID
i din WHERE
klausulen är tvetydig, det betyder att systemet har problem med att identifiera lämplig kolumn eftersom det finns flera CategoryID
kolumner.
För att lösa det här problemet, använd aliaset för att ange vilken kolumn du vill använda för 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
Jag ändrade också lite på frågan för att få samma resultat men istället för att använda en kombination av LEFT JOIN
+ IN
klausul + underfråga, jag använde INNER JOIN
klausuler. Med den här frågan behöver du bara definiera önskat CategoryID
en gång och det kommer automatiskt att få alla barnkategorier.
Jag är inte säker på att din fråga körs korrekt eftersom du använder COUNT
funktion utan att gruppera resultaten efter CategoryID
...
Hoppas detta hjälper dig.