我有一个模式弹出窗口,当前在其中包含复选框,以便管理员能够向产品添加功能。我需要将其更改为能够绑定到当前页面上的产品类别,但我的sql语句不起作用。SELECT语句问题
这里的表格是Feature,Category和Marketing。功能通过CategoryID连接到类别(类别表中的功能&中的类别ID),功能通过功能ID连接到Marketing(在Marketing表中称为MarketingData)
MarketingTypeID为3告诉Marketing表查找功能,并将跳转到功能表。 select语句在我添加Category表格的东西之前工作,所以很明显我编码的那部分是错误的。有人能帮我让select语句正常工作吗?
这工作:
SELECT DISTINCT FeatureID, FeatureTitle
FROM Feature
WHERE FeatureID NOT IN
(SELECT m.MarketingData FROM Marketing
WHERE MarketingTypeID = 3 AND ProductID = @ProductID)
ORDER BY FeatureTitle
这不:
SELECT DISTINCT f.FeatureID, f.FeatureTitle FROM Feature f
INNER JOIN Category c
ON c.CategoryID = f.CategoryID
WHERE f.CategoryID = @CategoryID
AND f.FeatureID NOT IN
(SELECT m.MarketingData FROM Marketing m
WHERE m.MarketingTypeID = 3 AND m.ProductID = @ProductID)
ORDER BY f.FeatureTitle
EX: FeatureID和#23,网络教程,有32类别ID ... 。该类别称为平台,位于类别表中。 FeatureID#23不在Marketing表中,因此与所选产品(产品ID#1)无关。我需要一个复选框,表示Web教程显示在模式中。就像我之前说过的那样,在添加与用户选择的产品关联的类别的所有信息之前,情况还是很好的。
更新:我不知道为什么我试图按照我的方式编写该声明。我意识到这比我原先想象的要容易得多,并且改变了陈述。现在这个工作,谢谢大家的帮助!我改变了SELECT语句:
"SELECT DISTINCT f.FeatureID, f.FeatureTitle
FROM Feature f
LEFT JOIN Category c ON c.CategoryID = f.CategoryID
WHERE f.CategoryID IN
(SELECT CategoryID FROM CategoryLink
WHERE ProductID = @ProductID)
AND f.FeatureID NOT IN
(SELECT m.MarketingData FROM Marketing m WHERE m.MarketingTypeID = 3
AND m.ProductID = @ProductID)
ORDER BY f.FeatureTitle"
定义“不起作用”。 – JNK
数据库结构的屏幕截图是最新的吗?我在功能表中看不到CategoryID列 –
功能表中没有此产品数据库图片中的类别ID字段。 – JeffM