dongzhong5833 2015-07-31 09:46 采纳率: 0%
浏览 98
已采纳

Mysql - 将数组元素与字段值进行比较

I have a table with structure

id | item | order_date | delivery_date

And I have an array of dates, for example

$dates = array('2015-06-01', '2015-06-11', '2015-06-26');

What I need to do is to find count of items which where ordered, but not delivered yet on each date. Because of my code complexity, it is impossible to foreach array and search for each date separately.

There is an example of what I think the query should look like, but I am starting wondering if it is even possible to make it work this way (without foreaching each date).

SELECT SUM(id) FROM orders WHERE order_date > IN({implode(",", $dates)}) AND delivery_date < IN ({implode(",", $dates)}) GROUP BY ???

Notice: I would like to GROUP BY each date given in an array.

  • 写回答

1条回答 默认 最新

  • dongyi1429 2015-07-31 10:14
    关注

    Use a subquery that returns all the dates in the array. Then you can join with that, and use its column in the GROUP BY.

    $subquery = implode(' UNION ', array_map(function($d) {
        return "SELECT '$d' AS date";
    }, $d));
    $query = "SELECT d.date, SUM(id)
              FROM orders
              JOIN ($subquery) AS d ON d.date BETWEEN order_date AND delivery_date
              GROUP BY d.date";
    

    Note that if an order matches multiple dates, it will be counted for each of them.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。