• 締切済み

mysqlのcountの挙動

mysqlのcountの挙動について教えてください! tableの内容 id,temp_id,sex,create_date 1,aaa,1,2009-01-01 00:00:00 2,bbb,1,2009-01-02 00:00:00 3,bbb,1,2009-01-02 00:00:00 4,ccc,1,2009-01-03 00:00:00 5,ccc,1,2009-01-03 00:00:00 6,ccc,1,2009-01-03 00:00:00 実現したいことは単純で日付を参照し 2009-01-01であればsex=1は1件 2009-01-02であればsex=1は2件 2009-01-03であればsex=1は3件 と表示させたくforeach内で以下のソースで試したのですがうまく取得 できず任意の日付が2009-01-03であっても結果が1となってしまいます。 ※$val2には任意のY-m-d形式の配列の値が入ります。 $res =& $mdb2->query("SELECT Count(sex) AS cnt FROM table WHERE DATE_FORMAT(create_date, '%Y-%m-%d') = '" . mysql_real_escape_string($val2) . "' && sex = '" . mysql_real_escape_string(1) . "' GROUP BY temp_id"); while ($row = $res->fetchRow()) { $data[$key]['man'] = $row['cnt']; }

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

SQLの組み立てはいけてそうですが、実際のSQLは正常ですか? && は AND の方が分かりやすいかも。 [$key] がおかしいということもないんでしょうか。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

ダメでしたか。 MySQL専門のカテゴリがありますので、そちらで質問されてはいかがでしょう? > [技術者向] コンピューター > データベース > MySQL お役に立てなくて申し訳ない。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

Count(sex) としている為だと思われます。 Count(*)じゃないとまずいですね。Count(sex)だとsexの値が重複するとカウントされません。

dcx147
質問者

お礼

お返事ありがとうございます。 Count(*)で試しましたが思うように取得できませんでした^^; sql文は始めたばかりで理解できていない箇所が多く引き続き調べて みたいと思います

関連するQ&A