У меня есть модальное всплывающее окно, которое в настоящее время содержит флажки для администратора, чтобы иметь возможность добавлять функции к продукту. Мне нужно было изменить это, чтобы иметь возможность привязаться к категории продукта на текущей странице, но мое заявление sql не работает.
Таблицы здесь: «Особенности», «Категория» и «Маркетинг». Feature соединяется с Category с CategoryID (названным CategoryID в Feature & в таблицах Category), а Feature соединяется с Marketing с FeatureID (называемым MarketingData в таблице Marketing)
Параметр MarketingTypeID, равный 3, указывает таблице «Маркетинг» искать элемент и переходит к таблице элементов. Оператор 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
![enter image description here](https://i.stack.imgur.com/ATGhT.jpg)
EX: FeatureID # 23, веб-учебники, имеет ID категории 32 ... эта категория называется платформами и находится в таблице категорий. FeatureID # 23 НЕ находится в таблице Marketing, поэтому НЕ связан с выбранным продуктом, который является ProductID # 1. Мне нужен флажок с надписью Web Tutorials для отображения в модале. Как я уже говорил, было прекрасно, когда я добавил все материалы о категории, связанные с продуктом, который был выбран пользователем.
ОБНОВЛЕНИЕ: Понятия не имею, почему я пытался написать это утверждение так, как оно у меня было. Я понял, что это было намного легче, чем я первоначально думал, и изменил утверждение. Это работает сейчас, спасибо за помощь всем! Я изменил оператор 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"