У меня есть большая таблица предметов с разной ценой на разные даты. Для отображения цен мне нужен запрос, который возвращает самый дешевый товар за определенный период времени. В настоящее время у меня есть:
$query = Offer::query();
$query->whereBetween('date', [..., ...]);
//other where conditions
$query->selectRaw('*, MIN(price) as lowest_price');
$query->groupBy('item_id');
Я знаю, что я не должен использовать групповые выборки с группой по, поэтому я застрял. Я сделал кучу решений с Raw, но ни одно из них не сработало. Как я могу сделать этот запрос, чтобы получить правильные результаты?
РЕДАКТИРОВАТЬ: я объясню на примере отеля. У нас есть отель с номерами, и мы можем дать разные цены на номера в разные периоды времени. И тогда запрос вернет все доступные комнаты за указанный период времени, но это может вернуть одну и ту же комнату несколько раз, если период времени будет длинным. И здесь мы можем использовать группу, которая должна соблюдать условия и возвращать самые дешевые цены для каждого доступного номера (дублированные номера не допускаются).