2012-10-27 73 views
0

這一個正在困擾着我,我將繼續並通過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的房產?所以在上面的例子中,我想要propery 1,但不是2.

我想一種方法是內部連接和過濾我們想要的,但我想概括這個,所以我可以找到所有屬性與功能A ,B,C等。

回答

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 

SQLFiddle Demo

+1

AHHHH。我看到你在那裏做了什麼:) – Umair

相關問題