Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql ...w którym klauzula jest niejednoznaczna

Otrzymany błąd informuje, że kolumna CategoryID w swoim WHERE klauzula jest niejednoznaczna, co oznacza, że ​​system ma problem z identyfikacją odpowiedniej kolumny, ponieważ istnieje wiele CategoryID kolumny.

Aby rozwiązać ten problem, użyj aliasu, aby określić, której kolumny chcesz użyć dla swojego WHERE klauzula:

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

Zmieniłem również nieco zapytanie, aby uzyskać ten sam wynik, ale zamiast używać kombinacji LEFT JOIN + IN klauzula + zapytanie podrzędne, użyłem INNER JOIN klauzul.W tym zapytaniu wystarczy zdefiniować żądany CategoryID raz i automatycznie otrzyma wszystkie kategorie podrzędne.

Nie jestem pewien, czy Twoje zapytanie działa poprawnie, ponieważ używasz COUNT funkcja bez grupowania wyników według CategoryID ...

Mam nadzieję, że to ci pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego niektóre typy przygotowanych zapytań wykorzystujących PDO w PHP z MySQL są wolne?

  2. Policz z warunkiem IF w zapytaniu MySQL

  3. SQL JOIN wiele do wielu

  4. Korzystanie z poprzedniego folderu danych MySQL w nowej instalacji MySQL

  5. Jak przyznać wszystkie uprawnienia w bazie danych w MySQL?