sql >> データベース >  >> RDS >> Mysql

mysql ...inwhere句があいまいです

    表示されるエラーは、列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. テーブルの開始日と終了日からのPostgresのGenerate_series

    2. パフォーマンスの神話:クラスター化インデックスと非クラスター化インデックス

    3. PHPを介してMySQLデータベースの出力をXMLに取得

    4. MySQLとOracleデータベース間でのデータの転送