2009-11-03 51 views
0

我有3個表 - 項目, 道具, Items_To_Props問題加入SQL Server 2000的

我需要返回匹配我送 例如所有屬性的所有項目

items 
1 
2 
3 
4 

props 
T1 
T2 
T3 

items_to_props 
1 T1 
1 T2 
1 T3 
2 T1 
3 T1 

當我發送T1,T2我只需要獲得項目1

回答

0
SELECT T.itemId 
    FROM (SELECT itemId, count(distinct prop) propCount 
      FROM items_to_props 
     WHERE prop in ('T1', 'T2') 
     GROUP BY itemId) T 
WHERE T.propCount = 2 

如果你不知道你有多少道具都有,你可以創建一個臨時表#P(prop),用你的道具填充它,然後運行如下因素查詢(會做同樣的事情):

SELECT T.itemId 
    FROM (SELECT i.itemId, count(distinct p.prop) propCount 
      FROM items_to_props i 
      JOIN #P p on i.prop = p.prop 
     GROUP BY i.itemId) T 
WHERE T.propCount = (SELECT COUNT(DISTINCT prop) FROM #P) 
+0

但我不知道有多少道具我有 – eyalb 2009-11-03 09:24:03

+0

Tnx。它工作正常 – eyalb 2009-11-03 09:35:41

0

對於T2,您只得到一行是正確的,您應該得到3對於T1

+0

從物品內部加入items_to_props 其中t = T1和t = T2 我知道這是錯誤的,但我不知道如何獲得1行的項目有2 prpos – eyalb 2009-11-03 09:21:33