我有一个存储过程,我想通过连接表获取一些数据。数据库是旧的,没有约束。
这是我的程序:
id CategoryId Company
1 Deckenlauf Normstahl
1 RGD_EUR9_DL Normstahl
如您所见,我想选择与该类别无关的产品' Deckenlauf'。
问题是,如果产品连接到多个类别,我将会重新选择连接到该类别的产品,因为它只是跳过连接到该类别的产品,但找到连接到另一个类别的相同产品
from collections import Counter
cnt=Counter()
for key,value in l:
cnt[key] += value
print cnt
这是来自类别和产品之间的连接表。因此,在我的存储过程中,我不想接收id = 1的任何产品,但现在我会这样做,因为如果第二行没有连接到类别' Deckenlauf'。如何在存储过程中解决此问题?
答案 0 :(得分:0)
select distinct(p.id), pd.language, p.Company, pd.shortDescription from dbo.Category c
join dbo.ProductCategory pc on c.id = pc.CategoryId
join dbo.Product p on pc.id = p.id
join dbo.ProductDescription pd on p.id = pd.id
where
c.Company = @companyName and
c.languageid = @languageId and
p.Company = @companyName and
pc.Company = @companyName and
c.id != @categoryId and
pd.language = @languageId and
pd.Company = @companyName and
p.id not in (select id from ProductCategory where CategoryId = @categoryId)
添加最后一个选择