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クエリのGROUPBY命令には十分注意してください。結果に含まれ、集計式ではないすべての列(式は、行ではなくグループで機能するcount、SUM、maxなど)は、式ごとにグループに含める必要があります。ここではselect*を使用します。代わりに実際の列をリストして、グループ内でこのリストを取得するか、SELECTuser_idのみを使用する必要があります。

ほとんどのデータベースは、クエリによってそのようなあまりよく形成されていないグループを実行することを防ぎますが、MySQlはあなたを救いません、それはあなたがこのルールを予期しない場合に彼があなたに完全に間違った結果を与えないという意味ではありません集合体ではない)はgroupbyに含まれている必要があります。

次に、order句でエイリアスではなく、この式を再利用することで、集計式で順序付けできるようになります。

于 2010-12-22T16:13:24.267 に答える
0

javascriptでクライアント側の並べ替えを使用することもできますが、それを実行できる優れたjQueryアドオンがいくつかあります。

または、結合とグループ化を使用して単一のSQLを作成するように、コードを完全に書き直す必要があります。

しかし、$ rPaid、$ hPaid、$ sPaidのロジックを実際にたどることはできないので、そこであなたを助けることはできません。

于 2010-12-22T15:36:31.737 に答える