加入SQL Server 2000的问题

时间:2009-11-03 09:10:44

标签: sql-server join sql-server-2000

我有3张桌子 - 项目, 道具, Items_To_Props

我需要返回与我发送的所有属性相匹配的所有项目 示例

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项

2 个答案:

答案 0 :(得分:0)

对于T2,你只得到一行是正确的,T1应该得到3

答案 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)