L'errore che ricevi ti dice che la colonna CategoryID
nel tuo WHERE
la clausola è ambigua, ciò significa che il sistema ha un problema nell'identificare la colonna appropriata perché sono presenti più CategoryID
colonne.
Per risolvere questo problema, usa l'alias per specificare quale colonna vuoi usare per il tuo WHERE
clausola:
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
Ho anche modificato un po' la query per ottenere lo stesso risultato ma invece di usare una combinazione di LEFT JOIN
+ IN
clausola + sottointerrogazione, ho usato INNER JOIN
clausole.Con questa query devi solo definire il CategoryID
desiderato una volta e otterrà automaticamente tutte le categorie figlio.
Non sono sicuro che la tua query venga eseguita correttamente perché stai utilizzando il COUNT
funzione senza raggruppare i risultati per CategoryID
...
Spero che questo ti aiuterà.