Как составить SQL запрос?

Есть 2 таблицы. products и vendors_products. Одна содержит информацию о товаре. Вторая содержит информацию о товаре на определенном складе.
У products есть колонка type. У vendors_products есть колонка vendor

Сижу пытаюсь как-то сделать без подзапросов так, чтобы были выбраны все товары (products), у которых хотя бы на одном складе, кроме X, есть товары, или товары, имеющие type X и у которых на складе X тоже есть товар.

Что то типа

SELECT * FROM products 
LEFT JOIN products_vendors 
ON products.id=products_vendors.product_id 
WHERE product_vendors.vendor_id IN (‘a’, ‘b’, ‘x’) 
GROUP BY products.id 
HAVING SUM(products_vendors.quantity (тут как-то попытался придумать условие через CASE, но выдает ошибку) > 0) 
OR products_vendors.vendor = 'x' AND products_vendors.quantity > 0
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
@tester12
SELECT *,
sum(
	case when ( 	  ( products_vendors.quantity > 0 ) 
			        and (    ( product_vendors.vendor_id <> 'X' )
					          or (   ( products_vendors.vendor_id = 'X' ) 
						           and ( products.type = 'X' )
					             )
				          )
			  ) then 1 else 0 end
) as sum1,
FROM products 
LEFT JOIN products_vendors 
ON products.id=products_vendors.product_id 
WHERE product_vendors.vendor_id IN (‘a’, ‘b’, ‘x’) 
GROUP BY products.id 
HAVING ( sum1 > 0 );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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