连接SQL Server 2000的问题

发布于 2024-08-09 23:54:21 字数 205 浏览 1 评论 0原文

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

I have 3 tables -
Items,
Props,
Items_To_Props

i need to return all items that match all properties that i send
example

items
1 
2
3
4

props
T1
T2
T3

items_to_props
1 T1
1 T2
1 T3
2 T1
3 T1

when i send T1,T2 i need to get only item 1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

多彩岁月 2024-08-16 23:54:21
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

如果您不知道有多少个 props,您可以创建一个临时表 #P(prop),用您的 props 填充它并运行以下查询(将执行相同的操作):

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

If you don't know how many props you have, you can create a temp table #P(prop), populate it with your props and run the folowing query (will do the same thing):

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)
蓝颜夕 2024-08-16 23:54:21

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

It is correct that you only get one row for T2, you should get 3 for T1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文