• 締切済み

MYSQLでgroup by を教えてください。

まだ初心者なんです。よろしくお願いいたします。 テーブル$tbl_nameに日付date コラムに (2009-11-3 14:25:06).(2009-11-3 11:25:06). (2009-11-5 12:25:06).(... ....と年齢 ageコラムに (18)(19)(20)... 性別コラムage に (danshi)(jyoshi) が入っています。 これを日付別 に内容が存在するだけ出力したいのです。 出力内容は(18)→25、(19)→13、(20)→7、の数だけ、 同様に(danshi)→20、(jyoshi)→25、というように 〇月〇日18才は25人、19才は13人、20才は7人、 男子は20人、女子は25人と出したいのです。 $sql = "SELECT 'age',count(age) FROM $tbl_name group by 'date'"; $result = mysql_query($sql, $db) or die("クエリの送信に失敗しました。<br />SQL:".$sql); while ($row = mysql_fetch_assoc($result)){ $age .=$row;} 等記入しているのですが、何とも動きませんのです。 どうしたらよろしいものでしょう。よろしくお願いいたします。

みんなの回答

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

create table hoge(date datetime,seibetu varchar(10),age int); insert into hoge values( '2009-12-2 10:35:06','danshi','18'),( '2009-12-2 11:35:06','jyoshi','20'),( '2009-12-2 11:35:06','danshi','19'),( '2009-12-2 12:35:06','jyoshi','20'),( '2009-12-2 12:35:06','danshi','17'),( '2009-12-3 13:35:06','danshi','18'),( '2009-12-3 11:35:06','jyoshi','20'),( '2009-12-3 13:35:06','danshi','20'),( '2009-12-3 16:35:06','danshi','19'),( '2009-12-4 13:35:07','danshi','18'),( '2009-12-4 13:35:06','jyoshi','20'),( '2009-12-6 11:35:06','jyoshi','19'); だとして、 (1)日付別、年齢分布 select date(`date`) as d,age ,count(*) from hoge group by d,age; (2)日付別、性別分布 select date(`date`) as d,seibetu ,count(*) from hoge group by d,seibetu; ってことでしょうか?

akamomiji
質問者

お礼

こんにちは。yambejp様。 どうもありがとうございます。 返信が遅れまして申し訳ありませんでした。 まだまだ勉強が必要と自覚しており、このお正月ジックリ本を読んでyambejp様の ご回答に自分で確信を持ちたいと思っています。 また分からない事がありましたらよろしくお願いいたします。

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

まずコーテーションがおかしいです >$sql = "SELECT 'age',count(age) FROM $tbl_name group by 'date'"; 'age'→`age` 'date'→`date` で、dateでgroup by して、グルーピングしたIDにdateを使わないのも不明。 またdateとageの関係が不明・・・

akamomiji
質問者

補足

こんにちは。不明な点を補足させていただきます。 . .....date............   seibetu. .age 2009-12-2 10:35:06...danshi...18 2009-12-2 11:35:06...jyoshi...20 2009-12-2 11:35:06...danshi...19 2009-12-2 12:35:06...jyoshi...20 2009-12-2 12:35:06...danshi...17 2009-12-3 13:35:06...danshi...18 2009-12-3 11:35:06...jyoshi...20 2009-12-3 13:35:06...danshi...20 2009-12-3 16:35:06...danshi...19 2009-12-4 13:35:07...danshi...18 2009-12-4 13:35:06...jyoshi...20 2009-12-6 11:35:06...jyoshi...19 以上の様に入っていまして、 日付ごとにseibetuとageのそれぞれの数を数えたいのです。 よろしくお願いいたします。