@fman2

Как написать такой SQL-запрос?

Есть две таблицы.

1) tovar
tovar_id, tovar_name
1 tovar_name1
2 tovar_name2
3 tovar_name3

2) Price
price_id, tovar_id, price, date (varchar...(( )
1 1 10000 23.01.2015
2 1 12000 24.01.2015
3 1 14000 29.01.2015
4 2 8000 20.01.2015

Нужен запрос, который может вывести название товара + его последнюю стоимость, которая может быть за 10е число, 15... да за любое, даже за сегодняшнее, также в запросе необходимо сделать сортировку по цене.

У меня получается с помощью JOIN и Group by вывести необходимые записи, но сортировка по цене не работает
  • Вопрос задан
  • 2413 просмотров
Пригласить эксперта
Ответы на вопрос 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1) date конвертнуть в DATE! без вариантов вообще
2)
select
price.*, tovar.tovar_name
from price
join tovar on tovar.tovar_id = price.tovar_id
where price.date = (select MAX(price2.date) from price as price2 where price2.tovar_id=price.tovar_id )
order by price.price

без подзапроса сходу не могу придумать.
но это в любом случае извращение и очень медленный запрос, заведите себе еще одну табличку где хранится актуальная цена.
Ответ написан
Комментировать
conf
@conf
Ruby developer
SELECT p.*, t.tovar_name
FROM price p
INNER JOIN tovar t ON t.id = p.tovar_id
INNER JOIN (SELECT id, MAX(date) AS max_date FROM price GROUP BY tovar_id) AS max_price ON max_price.id = p.id AND max_price.max_date = p.date
ORDER BY p.price
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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