gpt4 book ai didi

mysql - 使用存储过程从连接表中获取唯一的产品

转载 作者:行者123 更新时间:2023-11-29 22:07:34 26 4
gpt4 key购买 nike

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

这是我的程序:

    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 的产品,但现在我会这样做,因为 if 占据第二行,因为它没有连接到类别“Deckenlauf”。如何在我的存储过程中解决这个问题?

最佳答案

我是这样解决的:

 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)

添加最后一个选择

关于mysql - 使用存储过程从连接表中获取唯一的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32004845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com