sql >> Database >  >> RDS >> Mysql

mysql ... waar de clausule dubbelzinnig is

De foutmelding die u krijgt, vertelt u dat de kolom CategoryID in je WHERE clausule dubbelzinnig is, wat betekent dat het systeem een ​​probleem heeft om de juiste kolom te identificeren omdat er meerdere CategoryID zijn kolommen.

Om dit probleem op te lossen, gebruikt u de alias om aan te geven welke kolom u wilt gebruiken voor uw WHERE clausule:

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

Ik heb de query ook een beetje gewijzigd om hetzelfde resultaat te krijgen, maar in plaats van een combinatie van LEFT JOIN te gebruiken + IN clausule + subquery, ik gebruikte INNER JOIN clausules.Met deze zoekopdracht hoeft u alleen uw gewenste CategoryID te definiëren één keer en het krijgt automatisch alle onderliggende categorieën.

Ik weet niet zeker of uw zoekopdracht correct wordt uitgevoerd, omdat u de COUNT . gebruikt functie zonder de resultaten te groeperen op CategoryID ...

Ik hoop dat dit je zal helpen.



  1. Variabele parameter/resultaatbinding met voorbereide instructies

  2. Wat is de beste manier om een ​​json-string te coderen/decoderen?

  3. Slaapstand op orakel, @GeneratedValue(strategie =GenerationType.AUTO)

  4. Code voor het aanroepen van een functie in een pakket vanuit C# en ODP.NET