- ベストアンサー
MySQLからPHPでデータを抽出し、重複データをまとめつつ、別のカラムを件数カウント表示する方法
- MySQLからPHPでデータを抽出し、重複データをまとめつつ、別のカラムを件数カウント表示する方法について教えてください。
- また、別のページへリンクしてデータを移動・表示する方法も知りたいです。
- 開発環境はPHP Version 5.2.11とMySQL (5.0)です。データの総数は東京都内のみで約1000件です。どのような勉強が必要でしょうか?
- みんなの回答 (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へ組み込んでください。
お礼
本当にありがとうございます! いっぺんに解決してしまいました。 私の頭の中では、SQLから引っ張り出したデータを加工することばかりにとらわれて、 よもやSELECT文一発でこんな抜き出し方が出来るなんて、本当に勉強不足で恐縮です。 最後のresult.phpへのデータの渡し方は、できればurlencodeは使いたくないので、 別途新規テーブルに一時的に書き込む方法を模索してみます。 非常に助かりました。ありがとうございました。