Я хочу найти самого дешевого оптовика для каждого товара только с помощью этой таблицы:

Table Article_Wholesaler

article_id     wholesaler_id        price
1                    1               500
1                    2              1000
2                    1               300

Первичный ключ состоит из article_id и wholesaler_id.

Есть ли способ добиться этого с помощью функции min?

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

select aw.article_id, aw.wholesaler_id, min(aw.price) as min_purchase_price
from Article_Wholesaler aw
group by aw.article_id;

Спасибо за любую помощь :).

1
taranaki 27 Ноя 2016 в 22:09

2 ответа

Лучший ответ

Вы можете использовать подзапрос с группой по

  select aw.article_id, aw.wholesaler_id, aw.price
  from Article_Wholesaler aw 
  where ( aw.article_id, aw.price in ( select  article_id, min(price)
                                        from Article_Wholesaler
                                         group by article_id )
1
scaisEdge 27 Ноя 2016 в 19:17

Вы не используете для этого group by. Ты можешь сделать:

Select t.*
From t
Where t.price = (select min(t2.price) from t t2 where t2.artickeid = t.articleid)
1
Gordon Linoff 27 Ноя 2016 в 19:14