2009-11-03 55 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