首页 > 解决方案 > 查询以从另一个表中查找某些产品组

问题描述

我正在寻找一个查询,我需要显示供应商表中没有类别 1 的产品(Products.CategoryID = 1)但确实有类别 4 的产品(Products.CategoryID = 4)的所有供应商。以下是我所拥有的,但仅显示不是第 1 类的产品。我不知道如何包含第 6 类的产品

感谢您考虑这个问题的答案。

表视图

select su.SupplierID, su.CompanyName
From Suppliers as su
where not exists
(select null
from Products as pr
where su.SupplierID = pr.SupplierID
and p.CategoryID = 1)

标签: sqlsql-servertsql

解决方案


我需要显示供应商表中没有第 1 类产品(Products.CategoryID = 1)但有第 4 类产品(Products.CategoryID = 4)的所有供应商。

您可以使用聚合:

select p.supplierID
from products p
where p.categoryID in (1, 4)
group by p.supplierID
having min(p.categoryID) = max(p.categoryID) and
      min(p.categoryID) = 4;

如果您想引入有关供应商的其他信息(除了supplierID),您可以使用JOINEXISTSIN


推荐阅读