sql >> Base de Datos >  >> RDS >> Mysql

mysql ... en donde la cláusula es ambigua

El error que recibe le indica que la columna CategoryID en tu WHERE la cláusula es ambigua, eso significa que el sistema tiene un problema para identificar la columna apropiada porque hay múltiples CategoryID columnas.

Para solucionar este problema, use el alias para especificar qué columna desea usar para su 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

También cambié un poco la consulta para obtener el mismo resultado, pero en lugar de usar una combinación de LEFT JOIN + IN cláusula + subconsulta, usé INNER JOIN cláusulas. Con esta consulta solo necesita definir su CategoryID deseado una vez y obtendrá automáticamente todas las categorías de niños.

No estoy seguro de que su consulta se ejecute correctamente porque está utilizando COUNT función sin agrupar los resultados por CategoryID ...

Espero que esto te ayude.