※ ChatGPTを利用し、要約された質問です(原文:GROUP_CONCATで条件指定)
PHPで複数の値をグループ化して表示する方法
2011/06/20 11:52
このQ&Aのポイント
PHPのSQL文を使用して、複数の値をグループ化して表示する方法について解説します。
現在のコードでは、複数の値が同じ場合でも全て表示されてしまうため、重複する値を除外して表示する方法を紹介します。
重複する値を除外するためには、SQLのGROUP BY句を使用することで解決することができます。
| ID | name | weight | height |
| 1 | 佐藤 | 80 | 160 |
| 2 | 太郎 | 90 | 160 |
というテーブルから
佐藤と太郎の身長と体重
体重 佐藤:80Kg / 太郎:90Kg
身長 160cm
というようにブラウザで表示したいのですが、
どのようにすればよいかわかりません。
現在はphpで
$sql .= " SELECT ";
$sql .= " GROUP_CONCAT(CONCAT(name, ':', weight, 'kg') SEPARATOR '/') AS weight ";
$sql .= " GROUP_CONCAT(CONCAT(name, ':', height, 'cm') SEPARATOR '/') AS height ";
$sql .= " FROM ";
$sql .= " ex_table ";
$rs = mysql_query($sql, $conn);
$box =<<<EOM
<table>
<tr>
<td cowspan="2">
佐藤と太郎の身長と体重
</td>
</tr>
EOM;
while($rec = mysql_fetch_array($rs)){
$box .= "<tr> ";
$box .= "<td>体重</td>";
$box .= "<td>{$rec['weight']}</td>";
$box .= "</tr>";
$box .= "<tr> ";
$box .= "<td>身長</td>";
$box .= "<td>{$rec['height']}</td>";
$box .= "<tr>";
}
$box .= "</table>";
としていますが、これだと
佐藤と太郎の身長と体重
体重 佐藤:80Kg / 太郎:90Kg
身長 佐藤:160cm / 太郎:160cm
となります。
同じ値のものは、そのまま数値だけを表示したいのですが、
SQL文で何かうまくする方法はないでしょうか。
質問の原文を閉じる
質問の原文を表示する
補足
身長が同じかどうかはDBをとるときにはわからない場合、どのようにしたらいいのでしょう。