MySQL报告-订单历史记录

MySQL报告-订单历史记录,mysql,reporting,Mysql,Reporting,我必须为报表创建一个MySQL查询 我有一个表history,用于记录产品订单的状态变化。我有订单生命周期(订单流程)的这些状态:新的、确认的、处理的、发货的、交付的、取消的、退回的。订单不一定遵循此状态流,例如:新订单可以立即取消,也可以在处理过程中取消。这使得准确的报告更加复杂 现在,我想做一份订单的供应链报告,这些订单经过确认、处理、装运和交付。但此报告应排除在任何阶段取消或退回的订单 考虑这个例子: 客户下了一个订单(id:34)。初始状态:新。已由代理确认,状态设置为已确认。供应链经理

我必须为报表创建一个MySQL查询

我有一个表
history
,用于记录产品订单的状态变化。我有订单生命周期(订单流程)的这些状态:新的、确认的、处理的、发货的、交付的、取消的、退回的。订单不一定遵循此状态流,例如:新订单可以立即取消,也可以在处理过程中取消。这使得准确的报告更加复杂

现在,我想做一份订单的供应链报告,这些订单经过确认、处理、装运和交付。但此报告应排除在任何阶段取消或退回的订单

考虑这个例子:

客户下了一个订单(id:34)。初始状态:新。已由代理确认,状态设置为已确认。供应链经理验证可用性、加工状态更改、装运和交付

另一个订单(id:55)来了,新的,已确认的,正在处理但已取消<代码>历史记录看起来像:

id  order_id status
111 34       new
112 34       confirmed
113 55       new
114 55       confirmed
115 55       processing
116 34       processing
117 55       cancelled
118 34       shipped
119 34       delivered
如何进行报告查询以仅获取已提交的订单

  • 确认、加工、装运和交付
  • 确认、处理、取消
  • 确认,取消
  • 等等

  • 如何编写查询以获取这些类型的报告?

    对于新订单:选择distinct(order\u id)from history,其中status=new 对于新处理:从历史记录中选择distinct(order_id),其中状态=已处理 等等

    对于新订单、已处理订单和已交付订单

    从历史记录中选择t1.order\u id作为t1,历史记录作为t2,历史记录作为t3,其中t1.order\u id=t2.order\u id和t2.order\u id=t3.order\u id和t1.status=new和t2.status=processed和t3.status=delived


    像这样对别人说下去

    太好了。如果我也把时间放在
    WHERE
    子句中会怎么样。如
    t3.date\u added>t2.date\u added和t2.date\u added>t1.date\u added
    。这意味着,订单首先是新的,然后设置为流程,然后交付。这样我也可以对状态流进行排序。。。对吧?是的,你能做到。如果答案是有帮助的,不要忘记接受它。谢谢