我有一個模式彈出窗口,當前在其中包含複選框,以便管理員能夠向產品添加功能。我需要將其更改爲能夠綁定到當前頁面上的產品類別,但我的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