3

私はこれを理解しようと一週間を費やしました.さまざまなソースからのものを組み合わせることで多少機能していますが、まだ完全には機能していません.

基本的に、最初の注文日で顧客をグループ化し、このグループがこれまでに費やした合計を表示しようとしている注文テーブルがあります。

これは私のSQLクエリです:

SELECT DISTINCT email, billing_name,
FORMAT(SUM(total),2) AS total,
DATE_FORMAT(MIN(orderdate), '%Y-%m') AS firstorder,
DATE_FORMAT(MAX(orderdate), '%Y-%m') AS lastorder
FROM orders
GROUP BY email
ORDER BY firstorder ASC

そしてPHPで私はやっています:

$rows = array();
while($row = mysql_fetch_array($query))
$rows[] = $row;
foreach($rows as $row) {
    $currMonth = $row['firstorder'];
    $total += $row['total'];
    if ($currMonth != $prevMonth) {
            echo $currMonth.' = $'.$total';
            $prevMonth = $currMonth;
            $total = 0;
        }
    }

これにより、次のようなリストが得られます。

    2010-05 = $230.49
    2010-06 = $557.32
    2010-08 = $223.38

しかし、数字は合計されません。何が間違っていますか? また、グループが他の月に費やした金額を表示するにはどうすればよいですか? これは、最終的にデータを表示したい方法ですhttp://www.quickcohort.com/

助けてください!ありがとう!!

4

2 に答える 2

0

あなたが本当に何を求めているか、そしてあなたのデータがどのように見えるかに依存します。

データが次のようになっている場合:

email          |BILLING NAME|Total  |OrderDate
----------------------------------------------
john@gmail.com |John Smith  |200.00 |15/05/2010
john@gmail.com |John Smith  | 15.49 |19/10/2010
john@gmail.com |Rico Swavez | 15.00 |10/08/2010
jane@gmail.com |Jane Doe    |250.00 |23/06/2010
jane@gmail.com |Jane Doe    |307.32 |27/10/2010
juan@gmail.com |Juan Valdez |223.38 |30/08/2010

それで...

SELECT email, billing_name,
FORMAT(SUM(total),2) AS total,
DATE_FORMAT(MIN(orderdate), '%Y-%m') AS firstorder,
DATE_FORMAT(MAX(orderdate), '%Y-%m') AS lastorder
FROM orders
GROUP BY email, billing_name
ORDER BY firstorder ASC

戻ります

EMAIL          | BILLING NAME |TOTAL |FIRSTORDER | LASTORDER 
------------------------------------------------------------
john@gmail.com | John Smith   |215.49|2010-05    | 2010-10
jane@gmail.com | Jane Doe     |557.32|2010-06    | 2010-10
john@gmail.com | Rico Swavez  | 15.00|2010-08    | 2010-08
Juan@gmail.com | Juan Valdez  |223.38|2010-08    | 2010-08

mysqlで最初にクエリを実行しますか?希望する結果が得られていますか?そうでない場合、問題はPHPではなくSQLにあります。SQLが必要なものを返している場合、問題はPHPにあります

于 2012-04-08T01:23:35.373 に答える