【发布时间】:2020-07-15 15:44:17
【问题描述】:
我有一张大桌子,上面有不同日期不同价格的商品。要显示价格,我需要一个在某个时间段内返回最便宜商品的查询。目前我有:
$query = Offer::query();
$query->whereBetween('date', [..., ...]);
//other where conditions
$query->selectRaw('*, MIN(price) as lowest_price');
$query->groupBy('item_id');
我知道我不应该在 group by 中使用通配符选择,所以我被卡住了。我做了一堆haveRaw解决方案,但没有一个奏效。 如何进行此查询以获得正确的结果?
编辑: 我将在酒店示例中进行解释。我们有一家有房间的酒店,我们可以在不同的时间段给房间不同的价格。然后查询将返回指定时间段内的所有可用房间,但如果时间段很长,这可能会多次返回同一个房间。在这里我们可以使用 group by which 必须尊重 where 条件并为每个可用房间返回最便宜的价格(不允许重复房间)。
【问题讨论】:
-
你遇到了什么错误?
-
这能回答你的问题吗? How to write Laravel GroupBy Query?
标签: mysql laravel eloquent group-by