sql >> Databáze >  >> RDS >> Mysql

mysql ...in kde je klauzule nejednoznačná

Chyba, která se zobrazí, vám sděluje, že sloupec CategoryID ve vašem WHERE klauzule je nejednoznačná, to znamená, že systém má problém identifikovat příslušný sloupec, protože existuje více CategoryID sloupce.

Chcete-li tento problém vyřešit, použijte alias k určení, který sloupec chcete použít pro WHERE klauzule:

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

Také jsem trochu změnil dotaz, abych získal stejný výsledek, ale místo použití kombinace LEFT JOIN + IN klauzule + dílčí dotaz, použil jsem INNER JOIN clauses.S tímto dotazem stačí definovat požadované CategoryID jednou a automaticky získá všechny podřízené kategorie.

Nejsem si jistý, zda váš dotaz běží správně, protože používáte COUNT fungovat bez seskupování výsledků podle CategoryID ...

Doufám, že vám to pomůže.



  1. Vložte perský text do tabulky mysql

  2. Chyba při použití vlastní funkce DQL s Doctrine a Symfony2

  3. Zabezpečení databáze – šifrování záloh během přepravy a v klidu

  4. Příklad připojení JavaFX MySQL prosím