1

了解しました。whileループでMySQLテーブルからデータを出力するテーブルがあります。それが出力する列の1つは、テーブルに静的に格納されません。代わりに、別のMySQLテーブルに表示される回数の合計です。

申し訳ありませんが、これがわかりやすいかどうかはわかりません。これが私のコードです:

    $query="SELECT * FROM list WHERE added='$addedby' ORDER BY time DESC";
    $result=mysql_query($query);
    while($row=mysql_fetch_array($result, MYSQL_ASSOC)){
$loghwid = $row['hwid'];

$sql="SELECT * FROM logs WHERE hwid='$loghwid' AND time < now() + interval 1 hour";
$query = mysql_query($sql) OR DIE(mysql_error());
$boots = mysql_num_rows($query);

//Display the table
    }

上記はテーブルを表示するコードです。

ご覧のとおり、2つの異なるMySQLテーブルからデータを取得しています。しかし、私はできるようになりたいですORDER BY $boots DESC。しかし、それは完全に異なるテーブルを数えているので、私はそれをどのように行うのか分かりません。

助けていただければ幸いです、ありがとうございます。

4

2 に答える 2

3

2つの異なるテーブルを結合するJOINことを目的とした操作があります。

SELECT list.hwid, COUNT(log.hwid) AS boots 
FROM list WHERE added='$addedby'
LEFT JOIN log ON list.hwid=log.hwid
GROUP BY list.hwid
ORDER BY boots

ORDER BY boots最後の行がMySQLでこのように機能するかどうかはわかりません。そうでない場合は、最後の行を除くすべてをサブクエリに入れます。

于 2010-05-12T04:12:08.870 に答える
0

しかし、$bootsによってインデックス付けされた配列へのクエリの結果。

AKA:

while(..){
    $boot = mysql_num_rows($query);
    $results[$boot][] = $result_array;
}
ksort($results);
foreach($results as $array)
{
    foreach($array as ....)
    {
          // display table
    }

}

ksortとの順序を切り替えることができkrsortますが、基本的には、の番号でキー設定された配列を作成し、$bootその配列をその番号で並べ替えてから、特定の値を持つレコードの各グループをトラバースし$bootます。

于 2010-05-12T04:05:10.390 に答える