【问题标题】:problem with join SQL Server 2000加入 SQL Server 2000 的问题
【发布时间】:2009-11-03 09:10:43
【问题描述】:

我有 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

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      T2 只得到 1 行是正确的,T1 应该得到 3 行

      【讨论】:

      • select items.* from items inner join items_to_props where t = T1 and t= T2 我知道那是错误的,但我不知道如何用具有 2 个 prpos 的项目获得 1 行
      猜你喜欢
      • 2011-04-24
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 2011-07-27
      • 1970-01-01
      相关资源
      最近更新 更多