我正在为客户端构建一个报告模块,而他们当前的过程使得我很难做到我正在尝试做的事情。数据库是MySQL,模块是用PHP编写的。选择MySQL中某个记录的下一次出现
本质上,我需要找到一个处理请求日期之间的订单。够简单。然后,我需要在第一时间发现它的状态设置为航运,因为它可以处理和运输之间设置来回多次,如果返回的顺序或warrantied等
但是,我需要这个在两个单独的查询中完成。
我可以得到他们正在处理的订单ID。我的问题是与第二个查询,我在做什么:
SELECT * FROM status_history WHERE orders_id IN {list_of_ids} AND status = 'shipped' GROUP BY orders_id
。
我的问题是,此查询产生的'运送'状态行可能在所需的之前/之后。
我知道主要的问题是他们的流程和我必须使用的遗留系统,但我无法改变。
我需要做的是: SELECT * FROM status_history WHERE orders_id IN <list_of_ids> AND status = 'shipped' AND date_added > {date at processing} AND date_added < {date at next occurrence of processing, if there is one} GROUP BY orders_id
为什么两个查询? – Strawberry
@Strawberry我需要从第一个编译所有ID的列表,无论他们是否已发货,然后如果他们已发货,我需要额外的信息。 – David
这通常是带外连接的单个查询。考虑提供一些示例数据(理想情况下为sqlfiddle)和期望的结果,作为对您问题的编辑。 – Strawberry