【问题标题】:PHP - Mysql query: Display number of orders by day and store in variablesPHP - Mysql查询:按天显示订单数并存储在变量中
【发布时间】:2012-06-11 00:56:52
【问题描述】:

我有一个这样结构的表:

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  |

我需要查询数据库并计算总订单数,其中状态!= 取消,每一天,回到一个日历月,并为每一天的总数分配一个唯一变量。

昨天的订单总额可能是 $day-1、两天前 $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'];

【问题讨论】:

    标签: php mysql


    【解决方案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
    

    然后循环遍历结果。第一个是当天,第二个是昨天,第三个是前天,以此类推

    编辑

    包括循环/变量:

        <?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']。

    【讨论】:

    • 循环和设置变量是给我带来麻烦的主要事情。你能详细说明吗?我第一次使用 mysql...
    • 在哪里指定表名(customer_history)?
    • 等等,也许我没有得到你的数据模型。 consumer_history 表是关于什么的?有正常的订单表吗?
    • 嗯。每个客户都有一个 ID、订单、状态和订单日期。我正在尝试每天获得 # 个订单。该表恰好被称为 customer_history。也许我们通过Skype?
    • 在这种情况下尝试将“订单”更改为“客户历史”。
    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多