2012-05-02 12 views
5

製品テーブルから製品を取得するクエリを作成したいとします。タイプテーブルの種類とカテゴリ、製品の曲数。 しかし、何とかこのクエリはエラーをスローします。私は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) 

を追加したとき、それはそれは、集計関数またはGROUP BYのいずれかに含まれていないので、私が手にエラーが

列「Products.name」は、選択リストに無効です開始しました句。

答えて

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句に、ほぼすべての出力列を追加しないよそうすれば、あなたの質問に掲示された質問であなたがしなければならないだろう。

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 
+2

*なぜ*なぜ*彼はGROUP BYが必要でしょうか? –

+0

今、私は 'Te text、ntext、およびimageデータ型は比較できないか、並べ替えることができません。 – Jerodev

+0

OK、SELECT句に集計関数があるため、グループ化が必要です。 –

関連する問題