1

この構造のテーブルがあります:

table name: customer_history

id| orders | order_date (timestamp) |  status    |  
--------------------------------------------------
 1|   1    | 2012-05-29 13:11:59    |  active    |
 2|   1    | 2012-05-29 13:11:59    |  active    |
 3|   1    | 2012-05-30 13:11:59    |  canceled  |
 4|   1    | 2012-05-31 13:11:59    |  trialing  |

データベースにクエリを実行し、ステータスが != キャンセルされた注文の合計数を、1 か月前に遡って毎日カウントし、1 日ごとの合計に一意の変数を割り当てる必要があります。

昨日の注文合計は $day-1、2 日前は $day-2 などになります。

以下の編集回答。

$query = "SELECT 
            COUNT(*) AS number, 
            DATE(order_date) AS order_day 
        FROM 
            customer_history
        WHERE 
            status <> 'canceled' 
        GROUP BY 
            order_day 
        ORDER BY 
            order_date 
        DESC
        LIMIT 31";

$result = mysql_query($query) or die(mysql_error());

$i = 1;
$days = array();

while($row = mysql_fetch_assoc($result)) {

      $days[$i] = $row;
      $i++;
}

echo $days[1]['number'];
echo $days[2]['number'];
echo $days[3]['number'];
echo $days[4]['number'];
echo $days[5]['number'];
echo $days[6]['number'];
4

2 に答える 2

1
SELECT COUNT(*) AS number, DATE(order_date) AS order_day FROM orders WHERE status <> 'canceled' GROUP BY order_day ORDER BY order_date DESC LIMIT 31

次に、結果をループします。1 つ目は当日、2 つ目は昨日、3 つ目は一昨日などです。

編集

ループ/変数を含む:

    <?php

$query = "SELECT 
                COUNT(*) AS number, 
                DATE(order_date) AS order_day 
            FROM 
                orders 
            WHERE 
                status <> 'canceled' 
            GROUP BY 
                order_day 
            ORDER BY 
                order_date 
            DESC
            LIMIT 31";

    $result = mysql_query($query);

    $i = 1;
    $days = array();

    while($row = mysql_fetch_assoc($query)
    {
        $days[$i] = $row;
        $i++;

    }

    ?>

echo $days[1]['number'] は今日の注文数、昨日の $days[2]['number'] などを返します。echo $days[x][' で実際の日付を出力できます。 order_day']。

于 2012-06-09T19:29:15.047 に答える
1

このクエリを試してくださいGROUP BY order_date

SELECT COUNT(*) AS number, DATE(order_date) AS order_day
FROM orders WHERE status != 'canceled' 
GROUP BY order_date ORDER BY order_date DESC
于 2012-06-09T19:32:55.123 に答える