blrik
@blrik
Музыкант

Как загрузить последние данные из базы данных с помощью GROUP BY?

Добрый день, сейчас делаю для магазина анализатор цен. Скрипт раз в день проходит по сайтам конкурентов и собирает их цены.
Подскажите как теперь вывести последние цены на товары из базы данных?
Пробою делать через GROUP BY, результат выводится первый попавшейся, а не последний
Вот пример кода:
Price::select('price.id', 'price.market_id', 'markets.title', 'price.value')
->leftJoin('markets', 'markets.id', '=', 'price.market_id')
->where('price.status', 1)
->groupBy('price.market_id')
->get();
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
blrik
@blrik Автор вопроса
Музыкант
помогла статья Get Last Record In Each MySQL Group
Вот код, что получился:
Price::select('price.id', 'price.market_id', 'markets.title', 'price.value')
->leftJoin('markets', 'markets.id', '=', 'price.market_id')
->whereIn('price.id', function($query) {
    $query->select(DB::raw('MAX(id)'))
    ->from(with(new Price)->getTable())
    ->groupBy('market_id');
})
->where('markets.status', 1)
->where('price.status', 1)
->get();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы