• 締切済み

集計について

TABLE "acces" cd(int)auto_increment usercd(int) accesday(datetime) があり、その中から DATE_FORMAT(vEntryDate,'%Y-%m-%d') = 'yyyy-mm-dd'; という条件にマッチするusercdの数を取得したいのですがどうしたらよいのでしょうか? 結果として usercd count a 100 b 200 というように日付ごとに検索をかけたいと思っています。 よろしくお願いします。

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.4

ANo.1です。 みなさん指摘されてますように、typoがあると例示するのもアレなんですが(汗   SELECT usercd, count(*) as cnt FROM `acces` WHERE (DATE_FORMAT(accesday,'%Y-%m-%d') = '2008-05-16') GROUP BY `usercd`;  phpMyAdminから実行してエラーになるのであれば、文法上のエラー内容と位置も表示されているハズです(near ~~とか)。それを参考に自分の間違いを推測・修正するしかないです。  ちなみに条件は、DATE_FORMATを通さずに当日0時以上&翌日0時未満にするのが楽じゃないでしょうか?最終的にはプログラムでSQL文を組み立てるんでしょうし・・。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

そもそもaccesってところから怪しい。 もしエラーがでるというならaccessとかのつづり間違いじゃない? 凡ミスがおおいという感想 命題ではusercdはintとかいてありますが、実際結果には、aとかbという 文字がはいっているし、#2の回答ではcdでgroup byしているけど group by usercdですね? #1の提示ミスも含めて、なにがあっているかわからないので、どこが 間違っているか指摘するのは非常に難しい。 それとgroup byで集計したときには、キーと集計以外のフィールドは 値が保証されないので、select *と書くのは禁物です。

回答No.2

#1さんも指摘していますが、何が分からないのか具体的に説明してください。

sa7s0ylx
質問者

補足

SQL文の書き方がわかりません。 SELECT *, count(*) FROM `acces` WHERE DATE_FORMAT(accesday,'%Y-%m-%d') = '2008-05-16' GROUP BY `cd` でいいと思っているのですが、これをphpmyadminからSQL実行するとエラーになってしまします。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

vEntryDateというのはテーブル定義に見当たりませんが、どの列になるんでしょう? select count(*) from を使うとして、結果セットがusercd別であれば、group by がusercdで、whereが日付一致の条件でいいと思いますが、どのあたりがわからないのでしょう?

sa7s0ylx
質問者

補足

失礼しました。 vEntryDateではなくてaccesdayの間違いです。 すいません。

関連するQ&A