8

製品テーブルから製品を取得するクエリを作成したいと思います。これは、タイプ テーブルからのタイプとカテゴリ、および製品の曲数です。しかし、どういうわけか、このクエリはエラーをスローします。追加したら始まりましたcount(n.name)

SELECT p.name, p.publisher, p.description, p.price, p.picture
     , p.releasedate, t.type, t.category, count(n.name) AS songs
  FROM Products p
 INNER JOIN ProductType t ON (p.type_id = t.id)
 INNER JOIN Songs n ON (p.id = n.product_id)

私が得るエラーは

列 'Products.name' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。

4

2 に答える 2

6

行のみをグループ化し、適切なテーブルSongsの代わりに集計データを結合します。Songs

SELECT p.name, p.publisher, p.description, p.price, p.picture
     , p.releasedate, t.type, t.category, n.songs
  FROM Products p
 INNER JOIN ProductType t ON (p.type_id = t.id)
 INNER JOIN (
   SELECT
     product_id,
     COUNT(n.name) AS songs
   FROM Songs
   GROUP BY product_id
 ) n ON (p.id = n.product_id)

そうすれば、ほとんどすべての出力列をGROUP BY句に追加することを回避できます。これは、質問に投稿されたクエリで行う必要があります。

于 2012-05-02T23:03:51.837 に答える
0
SELECT p.name, p.publisher, p.description, p.price, p.picture, p.releasedate, t.type, t.category, count(1) AS songs
                    FROM Products p
                    INNER JOIN ProductType t ON (p.type_id = t.id)
                    INNER JOIN Songs n ON (p.id = n.product_id)
GROUP BY p.name, p.publisher, p.description, p.price, p.picture, p.releasedate, t.type, t.category
于 2012-05-02T17:52:39.323 に答える