Задать вопрос
@MasterCopipaster

Как написать SQL запрос с такими условиями?

Доброе время суток, не могу придумать SQL запрос
У меня есть такая таблица
id     |product_id|store_id|quantity|
-------+----------+--------+--------+
7050665|    103251|       3|       6|
7050666|    103251|      10|       1|
7050667|    103251|       5|       1|
7051144|    103250|      15|       4|
7051214|       153|      15|       3|
7051224|    103454|      15|       2|
7051413|    103905|       7|       1|

Хранит ID магазина, ID продукта, и кол-во товаров в этом магазине

Я хочу выбрать все магазины где есть товары с ID 103251 и 103250
И кол-во товара в каждом магазине для продукта 103251 >= 3 и для продукта 103250 >= 2
Тут больше всего вопросов у меня вызывает именно последние условие, я по стути должен для каждого магазина проверить:
В нем есть все нужные товары и их больше или равно нужному кол-ву.
Короче нужно выбрать все магазины где есть все товары в нужном кол-ве.
Если в магазине нет хотя бы одного товара в нужном кол-ве он не попадает в список

Собственно как такой SQL запрос написать не могу сообразить, по отдельности вроде решаемо, а придумать все сразу не получается.

UPDATE:

id      |product_id|store_id|quantity|
--------+----------+--------+--------+
 7050665|    103251|       3|       6|
 7050666|    103251|      10|       1|
 7050667|    103251|       5|       1|
 7051144|    103407|       3|       4|
66847706|    103407|       2|       4|


SELECT
	id,
	product_id,
	store_id,
	quantity
FROM
	planetavto.product_store where product_id in (103251,103407) ??????;

По идее должен попасть store_id только 3 - но как дописать запрос не понимаю
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Средний 3 комментария
Решения вопроса 1
Adamos
@Adamos
SELECT store_id FROM product_store 
WHERE (product_id = 103251 AND quantity > 2) OR (product_id = 103407 AND quantity > 1) 
GROUP BY store_id 
HAVING COUNT(id) = 2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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