Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql ...in where клаузата е двусмислена

Грешката, която получавате, ви казва, че колоната CategoryID във вашия WHERE клаузата е двусмислена, което означава, че системата има проблем да идентифицира подходящата колона, тъй като има множество CategoryID колони.

За да отстраните този проблем, използвайте псевдонима, за да посочите коя колона искате да използвате за вашия WHERE клауза:

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

Също така промених малко заявката, за да получа същия резултат, но вместо да използвам комбинация от LEFT JOIN + IN клауза + подзаявка, използвах INNER JOIN клаузи. С тази заявка трябва само да дефинирате желания от вас CategoryID веднъж и автоматично ще получи всички детски категории.

Не съм сигурен, че заявката ви се изпълнява правилно, защото използвате COUNT функция без групиране на резултатите по CategoryID ...

Надявам се това да ви помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Фатална грешка:Извикване на недефинирана функция mysql_connect()

  2. PHP / Mysql специални вмъквания на символи се съкращават

  3. Сравнение на производителността на MySQL:MySQL 5.7 срещу MySQL 8.0

  4. MySql :Предоставяне на опции само за четене?

  5. Синтаксис на SQL DELETE – изброен от СУБД