2010-12-22 104 views
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订购总计Sum函数使用

我要订购按降序价格总额。

我需要

$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) . "'"); 

上总被降序排序。

+0

将非日期传递给您的脚本会导致查询失败。如果你有错误,我可能会得到你的表的名字和更多的信息,我可以用它来直接攻击。 – DampeS8N 2010-12-22 15:26:49

+0

日期在脚本中指定...这不是我已发布的整个页面。 – friendishan 2010-12-22 15:28:07

回答

0

你可以使用客户端与JavaScript的排序,有一些很好的jQuery插件可以做到这一点。

或者您必须全部重写您的代码才能使用连接和分组来完成单个sql。

但我不能真正遵循$ rPaid,$ hPaid和$ sPaid的逻辑,所以我无法帮到你。

+0

$ rPaid用于定义总计..不包括在发布的代码中.. 您可以发布一些链接到任何jQuery插件吗? – friendishan 2010-12-22 15:44:42

1

在你的SQL查询中使用GROUP BY指令时要十分小心。所有在结果中并且不是聚集表达式的列(表达式应该是count,SUM,max等,在组上而不在行上)应该在你的group by表达式中; 在这里您使用select *,您应该尝试列出实际列,并在您的组中获取此列表,或者仅使用SELECT user_id。

大多数数据库都会阻止你通过查询来运行这样不是很好的组,但是MySQl不会让你陷入困境,并不意味着如果你不重新考虑这个规则,他不会给你完全错误的结果(所有非聚合的列必须在组中)。

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