【发布时间】:2015-07-31 09:46:22
【问题描述】:
我有一个结构表
id | item | order_date | delivery_date
我有一个日期数组,例如
$dates = array('2015-06-01', '2015-06-11', '2015-06-26');
我需要做的是查找每个日期已订购但尚未交付的物品的数量。由于我的代码复杂,不可能foreach数组,分别搜索每个日期。
有一个我认为查询应该是什么样子的示例,但我开始想知道是否有可能使它以这种方式工作(无需 foreaching 每个日期)。
SELECT SUM(id) FROM orders WHERE order_date > IN({implode(",", $dates)}) AND delivery_date < IN ({implode(",", $dates)}) GROUP BY ???
注意:我想对数组中给定的每个日期进行 GROUP BY。
【问题讨论】:
-
是的,我知道,这只是一个更清楚地解释我的问题的例子。我会查找已填写 delivery_date 的较旧条目,例如 order_date = 2015-04-30 AND delivery_date = 2015-05-05(这是我的问题中给出的日期数组的示例)
-
对不起,我能解释清楚了
-
你需要的是
$dates[0] BETWEEN order_date AND delivery_date OR $dates[1] BETWEEN order_date AND delivery_date OR $dates[2] BETWEEN order_date AND delivery_date -
谢谢@Barmar!但我发现只有临时表才能帮助我达到我的预期。