我有一个表SupplierCatalog (idProduct, idSupplier)
。一个产品可以由多个供应商提供;供应商提供多种产品(多对多关系)。
我想检查供应商是否提供了列表中的所有产品,例如,要检查的产品是(10, 26, 40, 42, 50)
,而供应商是5
。
我试过了:
SELECT idproduct
FROM SupplierCatalog
where idProduct IN (10, 26, 40, 42, 50) AND idSupplier = 5
然后在C#中检查返回的行数是否等于查询中传递的产品数,它可以工作,但对我来说看起来并不专业。
有谁知道如何获得我想要的结果的线索,如果所有都匹配,我只是一个
TRUE
,如果至少一个不匹配,我只是一个FALSE
。 最佳答案
假设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) ...
关于sql - 确定供应商是否供应 list 中的所有产品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48626892/