@aleksyglvnw

Как получить список актуальных цен?

Структура таблицы:

prices
- id
- related (laravel morph - не суть важно, через нее указываем на что цена)
- currency_id
- value
- relevant_from (дата с которой данная цена актуальна)

Пример данных (все для одного товара):

... currency_id - value - relevant_from
...      1         100     2020-06-10
...      1         200     2020-07-10
...      1         300     2020-08-10
...      2         100     2020-06-10
...      2         200     2020-07-10
...      2         300     2020-08-10


Описание запроса:

Нужно получить актуальный список цен для продукта во всех валютах.
Актуальной цена становится при условии если relevant_from меньше или равна текущей дате и ближе всего к текущему времени.
Результат запроса выглядит так (сегодня 2020-07-16):

... currency_id - value - relevant_from
...      1         200     2020-07-10
...      2         200     2020-07-10
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@MaximaXXl
Можно оконными функциями, можно по старинке

select p.*
from prices p,
(select currency_id, max(relevant_from) max_relevant_from
  from price 
  where relevant_from <= NOW()
   group by currency_id) p2
where p.currency_id = p2.currency_id and p.relevant_from = p2.max_relevant_from
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы