2011-03-29 18 views
2

where句で2つの列が等しいかどうか比較したいと考えています。列は、2つの列がこれは私がWhere句で2つの列が等しいかどうか比較する

SELECT authors.state, sum(qty*price)as sales_revenue 
    from authors,titles, stores, sales 
WHERE authors.state = (SELECT stores.state from stores) 

を使用しています文ですが、私はこの M

sg 8120, Level 16, State 1, Line 1 
Column 'authors.state' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. 
+1

だけ注意します:タイトルのデカルト積がある+売上+(著者+タイトル)。したがって、クエリによって返されるデータは無意味です。 – zerkms

+0

現在のクエリを投稿できますか?また、数量と価格は複数のテーブルで定義されていますか? – JPM

答えて

4

使用というエラーを取得し

に入社してきた別のテーブルからのものです次のようになります。

WHERE authors.state = stores.state 

また、ANSI-92 JOIN構文を使用してください。

SELECT authors.state, sum(qty*price) as sales_revenue 
FROM authors 
JOIN stores ON authors.state = stores.state 
JOIN titles ON ... 
JOIN sales ON ... 
GROUP BY authors.state 
+0

私はそれをして、同じエラーを受けました –

+2

@Steffan Harris:不足しているONとGROUP BYを追加してみてください。 –

+0

@Steffan 'SELECT'リストで集合関数を使うときは、' GROUP BY'節を追加する必要があります。この場合、 'GROUP BY authors.state' – Phil

0

この:

SELECT a.state, 
     sum(l.qty*l.price)as sales_revenue 
     FROM authors a 
     LEFT JOIN stores s on a.state=s.state 
     GROUP BY a.state 

あなたがその関係を確認することができるように

authors = id,state 
store = id,store 

例えば、各テーブルで使用可能な列を指定しますよろしく

関連する問題