【问题标题】:selecting all orders for last 30 days, and counting how many per day选择过去 30 天的所有订单,并计算每天的订单数量
【发布时间】:2011-07-02 20:25:54
【问题描述】:

我正在尝试从一位客户那里选择过去 30 天的所有订单,因此我需要 customer_id = "$customer_id" 并计算我每天有多少订单 为那一位客户。

我需要以这样的数组结束

Array ( 
  [1] => Array (
                 [orders] => 41
                 [date] => 2011-06-13 17:43:50 
               )
  [2] => Array (
                 [orders] => 11
                 [date] => 2011-07-13 17:43:50  
               )
  [4] => Array (
                 [orders] => 2
                 [date] => 2011-12-13 17:43:50  
               )

  and so on... for 30 days, if some day I dont have any orders, I dont need array or [orders] = 0 ...

}

我有一个名为“orders”的表,其中包含 id、customer_id 和日期字段。

我发现了这个问题SQL query for Calculating Total No. of Orders per Day? 但它对我没有帮助,或者我不太了解它,顺便说一句我是初学者。谢谢!

附言我设法做的是选择过去 30 天的所有订单。

$this->db->query("SELECT * FROM orders WHERE customer_id=" . $customer['id'] . " AND date > ADDDATE(CURDATE(), INTERVAL -30 DAY)")->result_array();

【问题讨论】:

  • 请澄清:您需要选择所有订单,还是只选择每天的订单数量?
  • 每个日期的订单总数,比如每天的访问者,我需要在最后创建图表。

标签: php mysql codeigniter


【解决方案1】:

使用 MySQL EXTRACT 函数从您的 日期字段 中获取 day,然后根据此按结果分组。我没有尝试过,但以下查询应该可以工作:

SELECT COUNT(*) AS orders, date_field
FROM your_table
WHERE customer_id=$my_cusotmer
GROUP BY EXTRACT(DAY FROM date_field)

【讨论】:

  • 谢谢!,当我这样说它的工作时,我认为“SELECT COUNT( * ) AS 订单,订单日期 WHERE customer_id =41 AND date > ADDDATE( CURDATE( ) , INTERVAL -30 DAY ) GROUP BY EXTRACT(DAY FROM date)"
  • 在日期前后使用 bacticks,因为它是包括 MySQL 在内的大多数 RDBMS 的保留关键字。
猜你喜欢
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
相关资源
最近更新 更多