我有一个名为SupplierCatalog(idProduct, idSupplier)
的表格,我想查看供应商是否有产品清单,因为可以在一个或多个供应商中找到产品,例如:idproducts
到用idsupplier
(5)检查(10,26,40,42,50)。
我不知道从哪里开始,我试过
SELECT idproduct
FROM SupplierCatalog
where idProduct IN (10,26,40,42,50) AND idSupplier = 5
然后检查C#,如果返回的行数等于查询中传递的产品数量,它可以工作,但对我来说看起来不专业。
有没有人知道如何获得我想要的结果,如果所有匹配,我只需要一个TRUE
或如果至少有一个匹配则FALSE
。
答案 0 :(得分:9)
假设idProduct, idSupplier
是唯一*,这是一个简单的查询:
SELECT 1
FROM SupplierCatalog
WHERE idProduct IN (10, 26, 40, 42, 50) AND idSupplier = 5
HAVING COUNT(*) = 5 -- this is the number of items in the above list
这将返回0或1行,这是您检查代码所需的全部内容。
*如果允许/存在重复更改为HAVING COUNT(DISTINCT idProduct) ...
答案 1 :(得分:7)
SELECT idproduct
FROM SupplierCatalog
WHERE idProduct IN (10, 26, 40, 42, 50)
AND idSupplier = 5
GROUP BY idproduct
HAVING COUNT(*) = 5
0行为假,1行为真
您可以删除AND idSupplier = 5
并获取所有供应商