我有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
我有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
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)
对于T2,您只得到一行是正确的,您应该得到3对于T1
从物品内部加入items_to_props 其中t = T1和t = T2 我知道这是错误的,但我不知道如何获得1行的项目有2 prpos – eyalb 2009-11-03 09:21:33
但我不知道有多少道具我有 – eyalb 2009-11-03 09:24:03
Tnx。它工作正常 – eyalb 2009-11-03 09:35:41