powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор минимальных значений по одному полю плюс уникальность по другому
4 сообщений из 4, страница 1 из 1
Выбор минимальных значений по одному полю плюс уникальность по другому
    #38767169
atillus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые SQL-гуру :)
Прошу помочь с запросом, который поставил меня в тупик ... никак не получается сделать вот что:

Есть таблица товаров `products`. В ней поля: наименование товара, название магазина, цена в этом магазине.

product_name | shop_name | price

Строки:

товар 1 | магазин 1 | 100
товар 1 | магазин 2 | 120
товар 1 | магазин 3 | 95
товар 2 | магазин 1 | 340
товар 2 | магазин 2 | 320
... ит.д.

Мне нужен запрос, который отберет только самые выгодные цены по каждому товару и (дял этого примера) вернет:

товар 1 | магазин 3 | 95
товар 2 | магазин 2 | 320

Что я делал:

SELECT * FROM `products` GROUP BY `product_name` ORDER BY `price`

Но, как я понимаю, что при таком запросе order by не работает...
...
Рейтинг: 0 / 0
Выбор минимальных значений по одному полю плюс уникальность по другому
    #38767177
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atillus
Что я делал:
SELECT * FROM `products` GROUP BY `product_name` ORDER BY `price`
Но, как я понимаю, что при таком запросе order by не работает...



я думаю что тут даже нет осознания того что такой запрос вообще должен делать.

Если надо самую выгодную цену только по товару, без учета магазина, то можно так:
Код: sql
1.
2.
3.
4.
5.
SELECT DISTINCT
   p.*
FROM `products` p
LEFT JOIN `products` q ON p.product_name = q.product_name AND p.price > q.price
WHERE q.product_name IS NULL



или так
Код: sql
1.
2.
3.
4.
SELECT
   p.*
FROM `products` p
WHERE NOT EXISTS(SELECT q.* FROM products q WHERE q.product_name = p.product_name AND q.price < p.price)



Тут можно даже сам текст запроса "перевести на русский" буквально:
Выбрать все записи по продуктам для которых не существует такого же продукта с меньшей ценой чем у данного. Следовательно, если данное условие выполнено, то цена продукта минимальна и запись попадает в выборку.
...
Рейтинг: 0 / 0
Выбор минимальных значений по одному полю плюс уникальность по другому
    #38767186
atillus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр, большое спасибо. Оба варианта работают...
К сожалению, я не совсем понимаю, что тут происходит, ибо пока пишу только довольно "примитивные" запросы, а такого мануала, чтоб по-русски, доступно и понятно, пока не нахожу...

Либо нахожу примитивные уроки вообще для чайников, самые основы... либо уже документацию для программистов, где почти ничего не понятно уже...
...
Рейтинг: 0 / 0
Выбор минимальных значений по одному полю плюс уникальность по другому
    #38767209
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор минимальных значений по одному полю плюс уникальность по другому
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]