2014-01-26 3 views
0

ОК, так что я следующее заявление MySQL ...MySQL Группировка по ID и заказ по MIN (цена)

Цель состоит в том, чтобы сгруппировать все продукты «в наличии» их «ид» кодов и отображения один с «минимальной ценой».

Я думал, группируя по идентификатору в одиночку и добавление MIN (цены) в ORDER BY пункте будет делать эту работу, но, видимо, не ...

SELECT * 
FROM (`products`) 
WHERE `in_stock` = 'yes' 
GROUP BY `id` 
ORDER BY brand, line, product, size, unit, MIN(price) 
LIMIT 25 

Может кто-то помочь?

Образец данные:

id brand line  product size unit price url 
123 Adidas Deep Energy EDT 50 ml 10.00 Link1 
123 Adidas Deep Energy EDT 50 ml 8.75 Link2 
123 Adidas Deep Energy EDT 50 ml 9.99 Link3 
124 Adidas Deep Energy EDT 100 ml 15.00 Link4 

Таким образом, эффективно запрос я пытаюсь собрать бы возвращать строки 2 и 4 выше выборочных данных (минимальные строки цен для «123» и «124»)

+0

Чтобы получить более четкое представление о вашей проблеме, вероятно, это поможет увидеть некоторые данные примера и ваши предполагаемые результаты. – eggyal

+0

Извините, да - отредактировал @eggyal – user2505513

ответ

0

вы рассчитать минимальную цену, как:

SELECT id, MIN(price) 
FROM products 
WHERE in_stock = 'yes' 
GROUP BY id ; 

чтобы получить строки с минимальными ценами, вы должны присоединиться, что еще в:

select p.* 
from products p join 
    (SELECT id, MIN(price) as minprice 
     FROM products 
     WHERE in_stock = 'yes' 
     GROUP BY id 
    ) pmin 
    on p.id = pmin.id and p.price = pmin.minprice; 
Смежные вопросы