【发布时间】:2015-08-14 07:45:13
【问题描述】:
我有一个存储过程,我想通过连接表获取一些数据。数据库很旧,没有约束。
这是我的程序:
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 = 'Normstahl' and
c.languageid = 'en' and
p.Company = 'Normstahl' and
pc.Company = 'Normstahl' and
c.id != 'Deckenlauf' and
pd.language = 'en' and
pd.Company = 'Normstahl'
如您所见,我想选择未连接到“Deckenlauf”类别的产品。
问题在于,如果一个产品与多个类别相关联,我无论如何都会收到与该类别相关联的产品,因为它只是跳过与该类别相关联的产品,但会找到与另一个类别相关联的相同产品.
id CategoryId Company
1 Deckenlauf Normstahl
1 RGD_EUR9_DL Normstahl
这是来自类别和产品之间的连接表。因此,在我的存储过程中,我不想收到任何 id = 1 的产品,但现在我会收到,因为如果它没有连接到“Deckenlauf”类别,则需要第二行。如何在我的存储过程中解决这个问题?
【问题讨论】:
-
哪个是mysql 或sql-server?
标签: mysql sql-server stored-procedures