|
|
|
Выбор минимальных значений по одному полю плюс уникальность по другому
|
|||
|---|---|---|---|
|
#18+
Уважаемые 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 не работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 12:39:24 |
|
||
|
Выбор минимальных значений по одному полю плюс уникальность по другому
|
|||
|---|---|---|---|
|
#18+
atillus Что я делал: SELECT * FROM `products` GROUP BY `product_name` ORDER BY `price` Но, как я понимаю, что при таком запросе order by не работает... я думаю что тут даже нет осознания того что такой запрос вообще должен делать. Если надо самую выгодную цену только по товару, без учета магазина, то можно так: Код: sql 1. 2. 3. 4. 5. или так Код: sql 1. 2. 3. 4. Тут можно даже сам текст запроса "перевести на русский" буквально: Выбрать все записи по продуктам для которых не существует такого же продукта с меньшей ценой чем у данного. Следовательно, если данное условие выполнено, то цена продукта минимальна и запись попадает в выборку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 13:21:41 |
|
||
|
Выбор минимальных значений по одному полю плюс уникальность по другому
|
|||
|---|---|---|---|
|
#18+
Александр, большое спасибо. Оба варианта работают... К сожалению, я не совсем понимаю, что тут происходит, ибо пока пишу только довольно "примитивные" запросы, а такого мануала, чтоб по-русски, доступно и понятно, пока не нахожу... Либо нахожу примитивные уроки вообще для чайников, самые основы... либо уже документацию для программистов, где почти ничего не понятно уже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 13:52:44 |
|
||
|
Выбор минимальных значений по одному полю плюс уникальность по другому
|
|||
|---|---|---|---|
|
#18+
atillus, ещё сюда посмотрите: FAQ: Выборка первой/последней записи в группах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 14:59:16 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1834127]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 355ms |

| 0 / 0 |
