sql >> Database teknologi >  >> RDS >> Mysql

mysql ...i hvor klausulen er tvetydig

Fejlen du får fortæller dig, at kolonnen CategoryID i din WHERE klausulen er tvetydig, det betyder, at systemet har et problem med at identificere den relevante kolonne, fordi der er flere CategoryID kolonner.

For at løse dette problem skal du bruge aliaset til at angive, hvilken kolonne du vil bruge til din WHERE klausul:

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

Jeg ændrede også en smule forespørgslen for at få det samme resultat, men i stedet for at bruge en kombination af LEFT JOIN + IN klausul + underforespørgsel, jeg brugte INNER JOIN klausuler. Med denne forespørgsel behøver du kun at definere dit ønskede CategoryID én gang, og det vil automatisk få alle børnekategorier.

Jeg er ikke sikker på, at din forespørgsel kører korrekt, fordi du bruger COUNT funktion uden at gruppere resultaterne efter CategoryID ...

Håber dette vil hjælpe dig.



  1. Sådan bruger du fremmednøgler med PHP

  2. MySQL Nested Select Query?

  3. Sådan bruges Alter Table Statement i SQL?

  4. Oracle:er der et værktøj til at spore forespørgsler, som Profiler til sql-server?