对不好的头衔感到抱歉,如果你能想到更好的头衔,请告诉我。
使用表格的多对多关系。
在ProductCategory表中,我有布尔列primarycategory
每个产品必须具有主要类别。
答案 0 :(得分:0)
注意:我假设表格中的字段名称不是您指定的字段。
这应返回没有主要类别的产品ID的明确列表。 SQL Server中的位字段是数字,因此您可以将它们提供给max()
函数。
select
pc.product
from
ProductCategory pc
group by
pc.product
having
max(pc.primarycategory) = 0
以上查询假设所有产品至少有一个类别。如果没有,请尝试以下方法:
select
pc.product
from
Product p
left join
ProductCategory pc on p.id = pc.product
group by
pc.product
having
max(isnull(pc.primarycategory, 0)) = 0
答案 1 :(得分:0)
假设true = value 1,请尝试:
Select Product From Product p
Where Not Exists (Select * From ProductCategory
Where Product = p.Product
And primarycategory = 1 )
但是如果您可以控制此数据库,请将PrimaryCategory列移动到Products表,(并使用类别标识符本身填充它,而不是布尔值),这属于正确规范化的模式... < / p>