@klaxwork

Как получить наименование категории, наименование товара с максимальной ценой и цену?

Собственно, сабж...
Есть таблица категорий Categories. Есть таблица товаров (Products) с привязкой к категории через category_id
Нужно получить список товаров с максимальной ценой в каждой категории, ну и цену этого товара.
У меня получился такой запрос, но не могу получить наименование товара:
select
	cat.name as 'категория',
	MAX(product.price) as 'максимальная цена'
from Categories cat
inner join Products product on cat.id = product.category_id
group by cat.name


Подскажите, как получить название товара с максимальной ценой?

Спасибо.
  • Вопрос задан
  • 818 просмотров
Пригласить эксперта
Ответы на вопрос 4
@d-stream
Готовые решения - не подаю, но...
Если диалект sql поддерживает ранжирующие функции (см. оконные) - можно плясать от них. Тогда запрос получится еще и читабельным и красивым.
Иначе - придется потанцевать.
Ответ написан
Комментировать
@klaxwork Автор вопроса
А что, нет никакого простого способа? Может встроенный select?
Ответ написан
Комментировать
Попробуйте в group by добавить через запятую имя товара еще. Вообще, если нужен один товар, я бы выборку делал из таблицы продуктов и к ней джойнил уже категории.
Ответ написан
Комментировать
@Senarest
Разработчик C#
with cat_max(cat_id, max_price) as 
(
	select category, MAX(price)
	from Product
	group by category
)

select c.name as 'Category', p.name as 'Product', cm.max_price as 'Max price'
from Product as p join cat_max as cm
	on p.price = cm.max_price
	and p.category = cm.cat_id
	join Category as c on c.id = cm.cat_id
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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