Задать вопрос
@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);
  • Вопрос задан
  • 2232 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы