Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql ... dans la clause where est ambiguë

L'erreur que vous obtenez vous indique que la colonne CategoryID dans votre WHERE la clause est ambiguë, cela signifie que le système a un problème pour identifier la colonne appropriée car il y a plusieurs CategoryID colonnes.

Afin de résoudre ce problème, utilisez l'alias pour spécifier la colonne que vous souhaitez utiliser pour votre WHERE clause :

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

J'ai aussi un peu changé la requête pour obtenir le même résultat mais au lieu d'utiliser une combinaison de LEFT JOIN + IN clause + sous-requête, j'ai utilisé INNER JOIN clauses.Avec cette requête, il vous suffit de définir votre CategoryID souhaité une fois et il obtiendra automatiquement toutes les catégories enfants.

Je ne suis pas sûr que votre requête s'exécute correctement car vous utilisez le COUNT fonction sans grouper les résultats par CategoryID ...

J'espère que cela vous aidera.