php - 获取产品最近 3 个月的销售数量

标签 php mysql sql database

我有 3 个 mysql 表,如下所示:

  • 产品(产品编号,名称)
  • 订单(order_id,order_date)
  • order_detail(order_detail_id, product_id, order_id, quantity)

我想获取过去 3 个月内销售的产品数量的总和,并按产品对它们进行分组,如下所示:

product_id  | quantity_sold_last_3_mouth    
 1          | 50    
 2          | 156    
 3          | 78

问题是如何仅连接表 order_detail 中创建最后三个月的行,因为日期仅在表 order 中设置

非常感谢任何想法或帮助

最佳答案

取决于您如何定义“最近 3 个月”:

select 
    od.product_id
  , sum(od.quantity) as quantity_sold_last_3_month
from order o
  inner join order_detail od
    on o.order_id = od.order_id
where 
  o.order_date >= last_day(now()) + interval 1 day - interval 3 month #first of month, e.g. Jan 1 from today March 25
  #od.order_date >= now()-interval 3 month #exactly 3 months back, e.g. Dec 25 from today
group by od.product_id

关于php - 获取产品最近 3 个月的销售数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43017234/

相关文章:

mysql - 如果不存在插入表mysql问题

mysql - 第一个非假值

php - Laravel 5.4 集合 - 如何通过索引从集合中获取数据

php - 防止注销用户访问登录用户可用的 url 链接

mysql - 在 SQL 中更新字符串的一部分

java - 将SQL语句转换为mySQL存储过程

mysql - 出现错误 :1241 (21000): Operand should contain 1 column(s)?

php - 使用 PHP 将 Wiktionary XML 数据转储到 MySQL 数据库中

php - 如何在 Laravel 5 上为 WAMP 安装 sqlite?

mysql连接处于 sleep 状态但客户端始终不接收数据并超时