@romashka_sky

Каким SQL запросом можно получить нужные записи?

Есть товары(Item) и предложения товаров (Offer) от разных продавцов. Необходимо пройтись по товарам и найти те, у которых поле minPrice не совпадает с минимальным значением поля price среди всех предложений товара. Подскажите, пожалуйста, каким запросом воспользоваться?

Пробовал так, но видимо, неправильно понимаю применимость HAVING:
SELECT Item.*, MIN(Offer.price) minOfferPrice
FROM Item 
  LEFT JOIN Offer ON Item.id = Offer.item_id
GROUP BY Item.id
HAVING (Item.minPrice != minOfferPrice);
  • Вопрос задан
  • 2231 просмотр
Пригласить эксперта
Ответы на вопрос 1
@AlexeyVD
SELECT Item.*
FROM Item i
JOIN (
           SELECT 
             o.item_id
           , MIN(o.price) AS minPrice 
           FROM Offer o
           GROUP BY o.item_id
        ) sel ON sel.item_id = i.id
WHERE i.minPrice != sel.minPrice
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы