表示されるエラーは、列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
でグループ化せずに機能する ...
これがお役に立てば幸いです。