@Counter

Как составить запрос с 2 join и сортировкой по дате?

Есть 3 таблицы.
products
prod_id|prod_name

shops
shop_id|shop_name

prices
price_date|prod_id|shop_id|price


Каждые 10 минут в prices сыпятся цены для разных продуктов и от разных шопов.
Как сделать запрос который отдаст все цены со свежей датой обновления для каждого магазина из shops для одного продукта?
product1|shop1|20:12|150
product1|shop2|20:14|50
product1|shop3|20:15|40
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 2
VladimirAndreev
@VladimirAndreev
php web dev
Select p.* from prices p
Join (select max(price_date) price_date, shop_id, prod_id from prices group by prod_id, shop_id) b using(price_date, shop_id, prod_id)
Ответ написан
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
обновляйте актуальную цену, а не рассчитывайте ее по истории. одна таблица хранит актуальную цену, вторая - историю изменений.

а так, конечно...
SELECT 
 (SELECT prod_name from products WHERE prod_id = t.prod_id) AS prod_name, 
 (SELECT shop_name from shops WHERE shop_id = t.shop_id) AS shop_name,
 t.price
FROM (
SELECT 
 p.prod_id,
 p.shop_id.
 p.price,
 row_number() over (PARTITION BY p.prod_id, p.shop_id ORDER BY p.price_date DESC) AS `row_number`
FROM prices p 
) t
WHERE t.`row_number` = 1
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
22 нояб. 2019, в 17:16
200 руб./за проект
22 нояб. 2019, в 17:09
6000 руб./за проект
22 нояб. 2019, в 16:37
10000 руб./за проект