0
    <?
$tablae = mysql_query("SELECT * FROM order_history where (type!='rent_referral' AND type!='rental_balance') AND date>'" . strtotime($time1) . "' AND date<'" . strtotime($time2) . "'  GROUP BY user_id"); 
while ($order = mysql_fetch_array($tablae)) { 

?>
<tr>
<?
$tablaes = mysql_query("SELECT * FROM members where id='$order[user_id]'"); 
$user = mysql_fetch_array($tablaes);
$idsd=$user['id'];
$rPaid=mysql_query("SELECT SUM(`price`) AS total FROM order_history WHERE (type!='rent_referral' AND type!='rental_balance') AND date>'" . strtotime($time1) . "' AND date<'" . strtotime($time2) . "'");
$hdPaid = mysql_fetch_array($rPaid);
$sPaid=mysql_query("SELECT SUM(`price`) AS total FROM order_history WHERE user_id='$idsd' AND (type!='rent_referral' AND type!='rental_balance') AND date>'" . strtotime($time1) . "' AND date<'" . strtotime($time2) . "'");
while ($hPaid = mysql_fetch_array($sPaid)) { 
?>
<td><?=$user['username']?></td>
<td><?=$hPaid['total']?></td>
<?  
}
?>

</tr>

<? } ?>

这让我得到了这个结果http://dl.dropbox.com/u/14384295/test.jpeg

我想按 DESC 订购总价格。

我会需要

$sPaid=mysql_query("SELECT SUM(`price`) AS total FROM order_history WHERE user_id='$idsd' AND (type!='rent_referral' AND type!='rental_balance') AND date>'" . strtotime($time1) . "' AND date<'" . strtotime($time2) . "'");

由 DESC 订购的总数。

4

2 回答 2

1

在 SQL 查询中使用 GROUP BY 指令时要非常小心。结果中且不是聚合表达式的所有列(表达式将是在组上而不是在行上工作的计数、总和、最大值等)应该按表达式在您的组中;在这里您使用选择 *,您应该尝试列出真正的列,并在您的组中获取此列表,或者仅使用 SELECT user_id。

大多数数据库会阻止您按查询运行这种格式不是很好的分组,但是 MySQl 不会让您保释,这并不意味着如果您不遵守此规则,他不会给您完全错误的结果(所有列不是聚合必须在 group by 中)。

然后,您应该能够通过在 order 子句中重用此表达式而不是他的别名来按聚合表达式进行排序。

于 2010-12-22T16:13:24.267 回答
0

您可以使用 javascript 进行客户端排序,有一些不错的 jQuery 插件可以做到这一点。

或者您必须完全重写您的代码以使用连接和分组来获得单个 sql。

但我无法真正遵循 $rPaid、$hPaid 和 $sPaid 的逻辑,所以我无法帮助您。

于 2010-12-22T15:36:31.737 回答