2010-12-22 8 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> 

<? } ?> 

Dies bringt mich dieses Ergebnis http://dl.dropbox.com/u/14384295/test.jpegSortieren nach Gesamt Sum-Funktion verwendet

ich die Preissummen von DESC bestellen möchten.

würde ich

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

die insgesamt auf, dass durch DESC bestellt werden.

+0

die Übergabe von Nicht-Daten an Ihr Skript würde dazu führen, dass die Abfrage fehlschlägt. Wenn Sie Fehler haben, würde ich wahrscheinlich die Namen Ihrer Tabellen und mehr Informationen bekommen, die ich verwenden könnte, um dann direkter anzugreifen. – DampeS8N

+0

Die Daten sind im Skript angegeben ... das ist nicht die ganze Seite, die ich gepostet habe. – friendishan

Antwort

0

Sie könnten entweder clientseitige Sortierung mit Javascript verwenden, es gibt einige nette jQuery Addons, die das tun können.

Oder Sie müssen Ihren Code total umschreiben, um einen einzelnen SQL zu haben, der Joins und Gruppe durch verwendet.

Aber ich kann nicht wirklich die Logik mit $ rPaid, $ hPaid und $ sPaid folgen, also kann ich dir dort nicht helfen.

+0

$ rPaid wurde verwendet, um Summen zu definieren .. nicht im Code enthalten. Können Sie einige Links zu einem beliebigen jQuery Addon posten? – friendishan

1

Seien Sie wirklich vorsichtig mit GROUP BY Anweisungen in Ihrer SQL-Abfrage. Alle Spalten, die im Ergebnis enthalten sind und keine Aggregatausdrücke sind (Ausdrücke wären die Anzahl, SUM, max usw., die an der Gruppe und nicht an den Zeilen arbeiten), sollten in Ihrer Gruppe nach Ausdruck sein; Hier verwenden Sie eine Auswahl *, Sie sollten versuchen, stattdessen die echten Spalten aufzulisten, und erhalten Sie diese Liste in Ihrer Gruppe durch, oder verwenden Sie nur SELECT user_id.

Die meisten Datenbank würde Sie davon abhalten, solche nicht sehr gut formierte Gruppe durch Abfrage laufen zu lassen, aber MySQl wird Sie nicht bailen, das heißt nicht, dass er Ihnen nicht völlig falsche Ergebnisse gibt, wenn Sie diese Regel nicht beachten (Alle Spalten, die keine Aggregate sind, müssen in der Gruppe enthalten sein).

Dann sollten Sie in der Lage sein, durch einen aggregate-Ausdruck zu bestellen, indem Sie diesen Ausdruck und nicht seinen Alias ​​in der order-Klausel wiederverwenden.

+0

$ tablae = mysql_query ("SELECT user_id, Preis FROM order_history where (type! = 'Rent_referral' AND type! = 'Rental_balance') AND date> '". Strtotime ($ time1).' 'UND date <' ". Strtotime ($ time2). "'GROUP BY user_id"); – friendishan

+0

dann sollten Sie GROUP BY user_id, Preis oder eine SELECT user_id, SUM (Preis), um nur GROUP BY user_id zu erhalten. – regilero