好吧,所以我有一个表在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
。但由于它是一个完全不同的表,我不知道如何去做。
感谢您的帮助,谢谢。
答案 0 :(得分: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中是否会像这样工作。如果没有,只需将最后一行放在子查询中。
答案 1 :(得分: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
值的每组记录。