标题可能对这个标题没什么大的帮助,所以我会尽力解释它。
假设有两个表。
Product (ProductID, Name)
ProductCategory (ID, ProductID, CategoryID)
以及包含要匹配的CategoryID列表的第三个临时表。
MatchTable(CategoryID)
我想使用MatchTable的内容返回具有所有相关类别的产品。 IE浏览器。
Product 1: Associated with categories 1 and 2.
Product 2: Associated with categories 2 and 3.
Product 3: Associated with categories 1, 2 and 3.
如果MatchTable包含1和2,我想返回产品1和3,因为它们符合条件。如果MatchTable包含2,那么将返回所有产品。
返回匹配MatchTable中任何值的产品的代码很简单,但我似乎无法获得与所有匹配的产品的语法。
猜猜我会在匹配表中测试匹配计数与行数
select p.ProductID, max(p.Name)
from Product p
inner join ProductCategory c on c.ProductID = p.ProductID
inner join MatchTable m on m.CategoryID = c.CategoryID
group by p.ProductID
having COUNT(*) = (select COUNT(*) from MatchTable)