daniilgorbenko
@daniilgorbenko
Программист, AI & BigData

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

У меня есть 2 таблицы. Таблица 1 содержит информацию о товарах в виде:

|id___|__name___________|
|1 ___|__samsung 1207 _|
|2 ___|__nokia 5537_____|
|3 ___|__LG-3124________|

Вторая таблица содержит информацию о ценах в формате:

id_goods_|_price__|__unit__|__date
1 ________|_140___|__eur___|01-01-2020
1 ________|_150___|__eur___|01-01-2021
2 ________|_200___|__eur___|01-01-2019
2 ________|_190___|__eur___|01-01-2020
2 ________|_205___|__eur___|01-01-2021
3 ________|_205___|__eur___|01-01-2021

Получается, что самсунг стоит 140 евро в 2020 году и 150 в 2021 году.
Мне надо получить данные из второй таблицы там, где цены товаров когда-то были равны четко заданным значениям. Например, я хочу получить товары, которые стоили когда-то 140 долларов и 150 евро, тогда у меня должен быть выведен только самсунг. Если я хочу получить товары, которые стоили когда-то 200 и 205 евро, то мне должно вывести только нокию (так как LG никогда не стоит 200 долларов, то он не должен быть выведен).
Подскажите, пожалуйста, как построить SQL запрос в таком формате.
  • Вопрос задан
  • 246 просмотров
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Вы можете использовать следующий запрос:

select g.id, g.name, count(distinct price)
from goods g
join prices p on g.id = p.id_goods
where price in (200, 205)  -- prices that we need to search
group by  g.id, g.name
having count(distinct price) = 2; -- 2 count different prices


MariaDB fiddle
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Dreamka
@Dreamka
Web-разработчик.
Используй JOIN'ы
Ответ написан
Ваш ответ на вопрос

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

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