Мои Product
записи связаны со многими по многим цифрам Category
с использованием таблицы ProductCategory
.Выбрать продукты, которые содержатся во всех категориях
В хранимой процедуре у меня есть список (CategoryIds
) двух или более значений CategoryId
. Как я могу запросить таблицу Product
и вернуть только продукты, относящиеся к категориям в CategoryIds
? Я не могу понять, нужно ли мне присоединяться или подбирать или ...?
SELECT * FROM Product as P -- I can't join here because the relation is many-to-many WHERE -- This only checks if there is one category to which the product is related (SELECT Count(C.CategoryId) FROM ProductCategory as PC INNER JOIN Category as C ON PC.CategoryId = C.CategoryId WHERE PC.ProductId = P.ProductId AND PC.CategoryId IN (@CategoryIds)) > 0
Любая помощь очень ценится!
Является ли "CategoryIds" параметр CSV ? – gotqn
Ваш запрос кажется довольно простым. Вы должны включить дополнительную информацию. Например, что такое @categoryId и как оно определено. Какую версию сервера sql вы используете, как определяются ваши таблицы? –
Включение тестовых данных и ожидаемого результата также может быть идеей, чтобы мы не угадали и не тратили время на неправильные ответы –