• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLからPHPでデータを抽出し、重複データをまとめつつ、別のカラ)

MySQLからPHPでデータを抽出し、重複データをまとめつつ、別のカラムを件数カウント表示する方法

このQ&Aのポイント
  • MySQLからPHPでデータを抽出し、重複データをまとめつつ、別のカラムを件数カウント表示する方法について教えてください。
  • また、別のページへリンクしてデータを移動・表示する方法も知りたいです。
  • 開発環境はPHP Version 5.2.11とMySQL (5.0)です。データの総数は東京都内のみで約1000件です。どのような勉強が必要でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

[chiiki]ごとにくくって表示させるのですから、SQLはグループ句でくくったほうがいいでしょう。 例)条件:新宿区 SELECT chiiki,genre,count(chiiki) as cnt FROM clinic WHERE EREA LIKE '%新宿区%' GROUP BY chiiki,genre ORDER BY chiiki 例のデータでは結果はこうなるはず chiiki,genre,cnt 大久保,歯科医院,1 歌舞伎町,内科,2 歌舞伎町,歯科医院,1 落合,歯科医院,1 '-------------------------------------------------- while($row = mysql_fetch_array($result)) { //地域が前レコードと違うならば、地域名表示 if($row["chiiki"]!=$tmp_chiiki) $tempHtml.= "■".$row['chiiki']."<BR>"; //リンク付き表示 $tempHtml.= "└<a href='index.php?chiiki=???&genre=???'>".$row['chiiki']."</a>(".$row['cnt'].")<BR>"; //現レコードの地域を一時記憶 $tmp_chiiki=$row["chiiki"]; } '-------------------------------------------------- 動的にやるとval=???の引数の部分が現状だとどうしても日本語文字を使わないと無理なので、 (例)val=歌舞伎町&genre=歯科医院 できれば、chiikiテーブル、genreテーブルを別途作ったほうがいいですね。 ※urlencodeすればできないこともないです。 $tempHtml.= "└<a href="index.php?chiiki='.urlencode($row['chiiki'])."&genre=".urlencode($row['genre'])."'>".$row['chiiki']."</a>(".$row['cnt'].")<BR>"; この場合は、result.phpではurldecodeしでSQLへ組み込んでください。

kuyatake
質問者

お礼

本当にありがとうございます! いっぺんに解決してしまいました。 私の頭の中では、SQLから引っ張り出したデータを加工することばかりにとらわれて、 よもやSELECT文一発でこんな抜き出し方が出来るなんて、本当に勉強不足で恐縮です。 最後のresult.phpへのデータの渡し方は、できればurlencodeは使いたくないので、 別途新規テーブルに一時的に書き込む方法を模索してみます。 非常に助かりました。ありがとうございました。

関連するQ&A