我有一个产品表(产品),所有产品都在过滤器连接表(Product_Filter_Join),(经典,圆形,木材,现代,餐饮等)中分配了过滤器。我的问题是,我无法弄清楚如何从表Product中显示-distinct-值,并且在列出此产品时,所有过滤器值都必须匹配。
+---------------------+-------------+-----------+ | * Product_Table | | | | productID | productName | | | 1 | table 1 | | | 2 | table 2 | | | 3 | table 3 | | | 4 | table 4 | | | | | | | * Filter_Join_Table | | | | FilterJoinID | filterID | productID | | 1 | 11 | 1 | | 2 | 12 | 1 | | 3 | 14 | 1 | | 4 | 11 | 2 | | 5 | 11 | 3 | | 6 | 12 | 3 | | 7 | 14 | 3 | | 8 | 13 | 4 | | | | | | ** Filter_Table | | | | filterID | FilterName | | | 11 | Classic | | | 12 | Wood | | | 13 | modern | | | 14 | dining | | +---------------------+-------------+-----------+
在此方案中,结果将是:表1,表3 ,因为它们是共享所有过滤器的唯一产品。
希望有人能为我的问题提供一些好的,简单的解决方案。
答案 0 :(得分:1)
如果您需要随机的Product_Filter_Join
行SELECT TOP 5 p.*
FROM Product p JOIN Product_Filter_Join f ON f.ProductID = p.ProductID
WHERE p.Productname LIKE 'table'
AND NOT EXISTS ( SELECT 'a'
FROM Product_Filter_Join f2
WHERE f2.ProductID = f.ProductID
AND f2.FilterJoinID > f.FilterJoinID
)
总是如果我已正确理解你的问题