2015-07-28 2 views
0

Я хотел бы получить id_product_attribute от самой низкой цене в следующей таблице:Выберите наименьшее значение в таблице MySQL

id_product | id_product_attribute | price 
210  | 131     | 44.950000 
210  | 132     | 39.550000 
210  | 134     | 22.820000 
210  | *135     | 18.250000 
211  | 137     | 36.230000 
211  | *138     | 28.980000 

Ближайший я был с этим запросом:

SELECT 
    id_product,id_product_attribute,MIN(price) as price 
FROM product_attribute 
WHERE price IN(
     SELECT MIN(price) 
     FROM product_attribute 
     GROUP BY id_product) 
GROUP BY id_product 

Хотя удастся получить самое низкое значение (что-то спросило мое время здесь), оно не вернет правильное значение id_product_attribute. Я попробовал ORDER BY в подзапросе, но это тоже не работает.

Заранее благодарен!

+1

Вы хотите получить самую низкую цену за 'id_product', не так ли? Ваш запрос выглядит так, но текст не упоминает об этом. – Sirko

+0

Да, вы правы. Это было бы оптимально. Тем не менее, теперь у меня есть хорошие работы. Если вы хотите поделиться, добавьте что-нибудь к этому :). – Matt

ответ

1

Ваш подзапрос должен выбрать мин (цена) И id_product, и так как это два поля, вам придется присоединиться к производной таблице, так как вы не сможете больше использовать in() матч:

SELECT * 
FROM product_attribute AS pa 
LEFT JOIN (
    SELECT id_product, MIN(price) as price 
    FROM product_attribute 
    GROUP BY id_product 
) AS minprices 
    ON pa.id_product = minprices.id_product 
     AND pa.price = minprices.price 
+0

Очень приятно, я узнал о новых навыках MySQL из-за вас. Я заставил его работать следующим образом. 'SELECT * \t \t \t ОТ product_attribute AS ра \t \t \t LEFT JOIN ( \t \t \t \t \t ВЫБОР id_product, MIN (цена) как цена \t \t \t \t \t ОТ product_attribute \t \t \t \t \t GROUP BY id_product \t \t \t \t) КАК MIN_PRICE \t \t \t НА \t \t \t \t pa.id_product = min_price.id_product \t \t \t И \t \t \t \t pa.price = min_price.price' – Matt

Смежные вопросы