SQLのGROUP BYが上手くいきません 環境はPHP,PostgreSQL7系です。 あるSELECT文が上手くいきません。 目的はイベントの内容(*しています)とイベントごとの参加人数の抽出です。 ・TBL & 列 1.event evid(イベントID) ev_title(イベント名) 2.user uid(顧客ID) evid(イベントID) 最初は以下のSQLで全件取得しています。 -SQL1- SELECT * FROM event イベントごとの参加者は以下で求めています。 -SQL2- select e.evid,count(u.uid) as cnt from event as e left join user as u on e.evid=u.evid group by e.evid 2つのSQLはそれぞれ期待した結果が返ってきます。 後は全件取得を追加すればOKと思い、2つ目のSQLに e.* を追加してみたところ以下エラーが起きました。 ERROR: column "e.ev_title" must appear in the GROUP BY clause or be used in an aggregate function PostgreSQL7系はSELECT の後に書けるのは GROUP BY で指定した列のみ という情報を見つけました。 そのせいなのでしょうか? それとも私のGROUP BY の考え方が間違っている? やりたいことは上記の SQL2 に eventTBLの全件取得も追加することです。 皆さんアドバイスお願いします。

PHP22,804閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

この回答はいかがでしたか? リアクションしてみよう

ThanksImg質問者からのお礼コメント

解決です! 上から順にその時点の内部結果を確認しつつ実験しました 蛇足の部分は大歓迎です。ありがとうございます ちなみに一番最後の方法を使用させて頂いています。 参加人数 = 0人が良いので 回答者さんは LEFT JOIN の位置が view の後にありますが、これは私の知らないSQL言語の文法でしょうか? Postgreではエラーでしたので、 event as e LEFT JOIN ~ と修正して対応しました。 ともあれ解決です!本当ありがとうございました!

お礼日時:2010/2/10 12:10