从存储过程的连接中获取唯一的产品

时间:2015-08-14 07:45:14

标签: mysql sql-server stored-procedures

我有一个存储过程,我想通过连接表获取一些数据。数据库是旧的,没有约束。

这是我的程序:

 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'。如何在存储过程中解决此问题?

1 个答案:

答案 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)

添加最后一个选择