MYSQLとPHPでサイトを作っています。

レコードの数をカウントするので悩んでいるのですが、現在は

$sql .= "select count(*) from table";
$row = mysql_query($sql);
$row = mysql_fetch_row($row);

上記のような感じでカウントしています。

例えば10件レコードがあって、フィールドAと言う部分のデータ別にカウントしたい場合などは同のようにすればよいか教えてください。


全レコード数 10件
フィールドデータが1の物  1件
フィールドデータが2の物  4件
フィールドデータが3の物  5件

見たいな感じで表示したいのですが、こんな説明でわかりますかねぇ~。

お分かりになる人よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/06/06 17:18:48
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数75

ポイント10pt

複数のSQLを準備し、何度か上記の処理(SQL発行、値取得、表示)を行えば良いです。

SQLのWHERE句で条件を指定し、その条件に合ったレコードの件数を取得します。

以下、SQL部分のみサンプルを書いておきます。

  • 全レコードの件数
$sql = "select count(*) from table";
  • field_Aの値が1の件数
$sql = "select count(*) from table where field_A = '1'";
  • field_Aの値が2の件数
$sql = "select count(*) from table where field_A = '2'";

といった感じです。

参考になれば幸いです。

id:ota2244 No.2

回答回数77ベストアンサー獲得回数4

ポイント10pt

GROUP BY句を使用すれば可能です。

"select count(*) from table GROUP BY A"

とすればグループ化して集計することが可能です。

id:black_kenchan

どういう風に記述するのですか?

表示するところまで教えていただけるとありがたいです。

お願いします。

2006/06/06 12:27:23
id:kazz7 No.3

回答回数446ベストアンサー獲得回数14

ポイント10pt

select A, count(*) from table group by A;

で、どうでしょうか?

これで、フィールドAごとの件数が集計できます。

id:sera_yr No.4

回答回数123ベストアンサー獲得回数6

ポイント10pt

$sql = "select A, count(*) as cnt from user_d group by A";

$res = mysql_query($sql);

while( $row = mysql_fetch_assoc( $res ) ) {

print $row['A'].":".$row['cnt']."
";

}


これでどうでしょうか

id:black_kenchan

出来ませんでした。

$sql = "select A, count(*) as cnt from user_d group by A";

のAはフィールド名ですよね。

テーブル名は書かなくてもよいのですか?

2006/06/06 13:22:25
id:sera_yr No.5

回答回数123ベストアンサー獲得回数6

ポイント60pt

大変失礼しました。

$sql = "select A, count(*) as cnt from user_d group by A";

「A」の部分がフィールド名で、「user_d」とある部分がテーブル名です。

id:black_kenchan

有難う御座います。

出来ました。

まだ、沢山分らない事があるので機会があったらまた宜しくお願いします。

2006/06/06 17:18:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません