这个让我很难过,我将继续通过SQL解释。这是数据结构:
属性
PropertyId Name
1 Property one
2 Property two
属性功能
PropertyFeatureId FeatureId PropertyId
1 1 1
2 2 1
3 1 2
功能
FeatureId Name
1 Hot tub
2 Wifi
我如何找到所有拥有热水浴缸和wifi的房产?所以在上面的例子中,我想要的是1,而不是2。
我认为的一种方式是通过我们想要的内部连接和过滤,但我想概括这一点,以便我可以找到所有具有A,B,C等特征的属性。
答案 0 :(得分:4)
这里的想法是计算propertyName的实例数,并且它等于WHERE
子句条件中提供的值的数量。
SELECT a.Name
FROM Property a
INNER JOIN [Property Features] b
ON a.PropertyID = b.PropertyId
INNER JOIN Feature c
ON b.FeatureID = c.FeatureID
WHERE c.Name IN ('Hot tub','Wifi')
GROUP BY a.Name
HAVING COUNT(DISTINCT c.Name) = 2