dポイントプレゼントキャンペーン実施中!

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'];
}

A 回答 (3件)

SQLの組み立てはいけてそうですが、実際のSQLは正常ですか?


&& は AND の方が分かりやすいかも。
[$key] がおかしいということもないんでしょうか。
    • good
    • 0

ダメでしたか。


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

Count(sex) としている為だと思われます。


Count(*)じゃないとまずいですね。Count(sex)だとsexの値が重複するとカウントされません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/16 13:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!