O erro que você recebe informa que a coluna
CategoryID
em seu WHERE
cláusula é ambígua, isso significa que o sistema tem um problema para identificar a coluna apropriada porque existem vários CategoryID
colunas. Para corrigir esse problema, use o alias para especificar qual coluna você deseja usar para seu
WHERE
cláusula: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
Também alterei um pouco a consulta para obter o mesmo resultado, mas em vez de usar uma combinação de
LEFT JOIN
+ IN
cláusula + subconsulta, usei INNER JOIN
cláusulas. Com esta consulta, você só precisa definir o CategoryID
desejado uma vez e obterá automaticamente todas as categorias filhas. Não tenho certeza se sua consulta foi executada corretamente porque você está usando o
COUNT
função sem agrupar os resultados por CategoryID
... Espero que isso irá ajudá-lo.