$rs = mysql_query( ”SELECT DISTINCT codeid, city FROM hoge WHERE todofu = ’$kensaku’ , $conn );

echo ”<table border=1>”;
echo ”<tr><th>コード</th><th>市町村</th></tr>”;
while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){
echo ”<tr>”;
echo ”<td>” . $rec[’codeid’] . ”</td>”;
echo ”<td>” . $rec[’city’] . ”</td>”;
echo ”</tr>”;
}

質問が長過ぎて登録出来なかったので、省略しております。
今はこのようになっていて、
$rec[’codeid’]と$rec[’city’]が数百件、表示されるのですが、
その結果の$rec[’codeid’]を1件ずつ$kensakuに入れて、表示させるには、どうすればいいのでしょうか?

$rs2 = mysql_query( ”SELECT * FROM hoge WHERE code = $rec[’codeid’] , $conn );みたいに使って、
こんどは、今表示されている結果の下に、この結果も表示したいです。
意味が分からない所は聞いて下さい。宜しくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/03/03 16:35:54
  • 終了:--

回答(1件)

id:birdie-brain No.1

birdie-brain回答回数40ベストアンサー獲得回数42006/03/03 17:09:25

ポイント50pt

質問の内容が、1個のテーブルのデータを、同じ`codeid`および`city`を持つデータごとに集約して全てのデータを表示したい、ということであれば、

1.`codeid`順にソートして全てのデータを取得する(SQLのORDER BY節)

2.ループの`codeid`の変わり目で表示内容を分岐する

という処理で対応可能です。


$rs = mysql_query( ”SELECT * FROM hoge WHERE todofu = ’$kensaku’ORDER BY codeid”, $conn );

echo ”<table border=1>”;

echo ”<tr><th>コード</th><th>市町村</th><th>その他</th></tr>”;

$codeid = ”dummy”;

while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){

echo ”<tr>”;

if ($codeid != $rec[’codeid’]) {

echo ”<td>” . $rec[’codeid’] . ”</td>”;

echo ”<td>” . $rec[’city’] . ”</td>”;

echo ”<td></td>”;

}

else {

echo ”<td></td>”;

echo ”<td></td>”;

echo ”<td>” . $rec[’other’] . ”</td>”;

}

echo ”</tr>”;

$codeid = $rec[’codeid’];

}


質問にあるように、ループの内側でSQLを何度も実行してしまうと、パフォーマンスが極端に低下するのでお勧めできません。


質問内容を外してたらすいません。

id:haring

良く読むと自分でも分かりにくい質問内容になってました。すいません。

もう少し、問題を把握してきます。

ありがとうございました。

2006/03/03 17:32:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません