都道府県穴埋めゲーム

| 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文で何かうまくする方法はないでしょうか。

A 回答 (1件)

GROUP_CONCATするならGROUP BYするのが妥当かと


GROUP_CONCATせずにPHP側で集計する方が条件は調整しやすいですけどね

SELECT
GROUP_CONCAT(CONCAT(name, ':', CAST(weight AS CHAR), 'kg') SEPARATOR '/') AS weight
,CONCAT(cast(height as char),'cm') AS height
FROM ex_table
GROUP BY height

この回答への補足

身長が同じかどうかはDBをとるときにはわからない場合、どのようにしたらいいのでしょう。

補足日時:2011/06/30 13:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報