- ベストアンサー
重複レコードのグループ化方法について
- 重複レコードをグループ化する方法について説明します。
- テーブル内の重複したデータをまとめて表示する方法を解説します。
- GROUP BY句を使用して重複レコードをグループ化することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ですよね ごめんなさい implode('<br>', $row) の$rowも2次元の配列になっちゃっているので 以下を修正 while ($row = mysql_fetch_assoc($query)) { if ( !isset( $rows[$row['ID']] ) ) { $rows[$row['ID']] = array(); } //ここに表示するデータを文字列として入れる。 $rows[$row['ID']][] = $row['表示するフィールド名']; } でどうでしょうか。。
その他の回答 (1)
- mr_araki
- ベストアンサー率85% (12/14)
SQLはGROUP BYなしで普通に取得 あとはテーブルを書き出すときにちょい工夫を $query = mysql_query($sql); $rows = array(); //同じIDのDB行を配列にまとめます while ($row = mysql_fetch_assoc($query)) { if ( !isset( $rows[$row['ID']] ) ) { $rows[$row['ID']] = array(); } $rows[$row['ID']][] = $row; } print_r($rows);//1回中身を確認すると勉強になると思います。 //テーブル書き出し print "<table>\n"; print "<tr><th>ID</th><th>フィールド</th></tr>\n"; foreach ($rows as $id => $row) { print '<tr><td>'.$id.'</td><td>'.implode('<br>', $row).'</td></tr>'."\n"; } print "</table>\n";
補足
返事が遅れて申し訳ありません。 自分のデータに当てはめてみましたが、'.implode('<br>', $row).'の部分が全て Array と表示されてしまいます。(複数のデータがあるべきレコードでも、1行でArrayになっています) 自分がおかしなことをしているだけかもしれませんが、一応意見をお聞きしたいです。お願いします。
お礼
早速ご返答ありがとうございます。本当に助かります。 無事、理想の形に成りました。 今後のためにもこの文法の意味(?)もきちんと勉強しておこうと思います。