在相当于amazon产品过滤器的情况下,我有来自前端的产品分类id作为id表。每种产品可以有许多分类。与我的网桥表(productId和classificationId)的普通联接返回具有这些ID中任何一个的产品。然而,我想只返回那些产品,有所有的ID,从而满足所有客户的愿望。而不是手术室。我该怎么做?
例如,这是与分类ID的测试数据的典型连接:
DECLARE @ClassifcationIds dbo.IdsTableNullable
INSERT INTO @ClassificationIds (Id)
VALUES (1),(2),(3)
SELECT DISTINCT
Id
Description
FROM dbo.Products as P
JOIN dbo.ProductClassification AS Pc ON P.Id = Pc.ProductId
JOIN @ClassifcationIds AS C ON C.Id = Pc.ClassificationId;
这将返回分类ID为1、2或3的产品。我只想要三个都有的产品。将桥接表连接到第一个id上,然后将结果表连接到下一个id上,依此类推,直到结果产品具有所有3个分类id,这是什么等效方法?
1条答案
按热度按时间f4t66c6m1#
使用
group by
以及having
: