SELECT *
FROM prices AS t1
WHERE relevant_from = (
SELECT MAX(t2.relevant_from)
FROM prices AS t2
WHERE t2.currency_id = t1.currency_id AND t2.relevant_from <= NOW()
)
Но разве нет запроса более оптимизированного для этого?
Это еще в связи должно работать на ларе и у меня вот что вышло:
public function relevantPrices()
{
/** @var Model|AbstractModel $model */
$model = $this;
return $model->morphMany(Price::class, 'related')
->where('relevant_from', function (Builder $query) {
$query->from(Price::getTableStatic())
->where('currency_id', 'currency_id')
->where('relevant_from', '<=', Carbon::now())
->max('relevant_from');
});
}
Alams Stoyne, не разобрался как через GROUP BY это решить.
Получить, что требуется получилось:
SELECT *
FROM prices AS t1
WHERE relevant_from = (
SELECT MAX(t2.relevant_from)
FROM prices AS t2
WHERE t2.currency_id = t1.currency_id AND t2.relevant_from <= NOW()
)
ORDER BY t1.currency_id
Но уверен, что должно быть более оптимизированное решение
Но разве нет запроса более оптимизированного для этого?
Это еще в связи должно работать на ларе и у меня вот что вышло: