首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有最小条件的雄辩groupBy

具有最小条件的雄辩groupBy
EN

Stack Overflow用户
提问于 2020-04-03 20:57:39
回答 1查看 281关注 0票数 0

我有一个很大的表格,里面有不同日期的不同价格的商品。为了显示价格,我需要一个查询,返回某段时间内最便宜的商品。目前我有:

代码语言:javascript
复制
$query = Offer::query();
$query->whereBetween('date', [..., ...]);
//other where conditions
$query->selectRaw('*, MIN(price) as lowest_price');
$query->groupBy('item_id');

我知道我不应该在group by中使用通配符selects,所以我被卡住了。我做了一堆havingRaw解决方案,但没有一个有效。如何进行此查询才能获得正确的结果?

编辑:我将在酒店示例中解释它。我们有一家有房间的酒店,我们可以在不同的时间段给房间提供不同的价格。然后查询将返回指定时间段内的所有可用房间,但如果时间段较长,则可能会多次返回同一房间。在这里,我们可以使用group by,它必须尊重where条件,并返回每个可用房间的最便宜价格(不允许重复的房间)。

EN

回答 1

Stack Overflow用户

发布于 2020-04-03 21:39:16

我不明白你为什么需要这个小组。如果你想获得最便宜的商品(最低价格),只需按价格排序结果并获得第一个。

代码语言:javascript
复制
Offer::whereBetween('date', [..., ...])->where(...)->orderBy('price', 'asc')->first();

要获得所有日期及其各自的最低价格,我猜您可以执行以下操作:

代码语言:javascript
复制
Offer::selectRaw("MIN(price) as min_price, date")->where(...)->groupBy('date')->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61012441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档