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

    @aleksyglvnw Автор вопроса
    Примерно то же самое у меня получилось:

    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');
                });
        }
  • Как получить список актуальных цен?

    @aleksyglvnw Автор вопроса
    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


    Но уверен, что должно быть более оптимизированное решение
  • Как получить список актуальных цен?

    @aleksyglvnw Автор вопроса
    Когда мы выбираем валюту, это выглядит так:

    SELECT * 
    FROM prices
    WHERE relevant_from <= NOW() AND currency_id = 2
    ORDER BY relevant_from DESC
    LIMIT 1


    Не могу сообразить как мне получить все валюты