1

好的,所以我有一个在 while 循环中从 MySQL 表输出数据的表。它输出的列之一不是静态存储在表中,而是它在不同的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
    }

以上是显示表格的代码。

如您所见,它从两个不同的 MySQL 表中获取数据。但是我希望能够ORDER BY $boots DESC。但由于它是对一张完全不同的表的计数,我不知道如何去做。

我会很感激任何帮助,谢谢。

4

2 回答 2

3

有一个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 索引的数组。

又名:

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

}

您可以在ksort和之间krsort切换顺序,但基本上您正在创建一个由 in 中的数字键入的数组,按该数字对该数组进行排序,然后遍历具有特定值$boot的每组记录。$boot

于 2010-05-12T04:05:10.390 回答