【发布时间】:2021-12-31 11:54:56
【问题描述】:
我有两个表,我需要按过滤器 id 过滤数据,这取决于与过滤器组 id 的关系。
例如我有这两个表:
表 1:
| ItemID | FilterID |
|---|---|
| 3 | 122 |
| 3 | 123 |
| 3 | 4 |
| 17 | 123 |
表 2:
| FilterID | FilterGroupID |
|---|---|
| 122 | 5 |
| 123 | 5 |
| 4 | 1 |
- 如果我按过滤器 id = 123 搜索,则需要返回具有此过滤器的所有项目 ID。
- 如果我搜索两个或多个具有不同组 ID 的不同过滤器 ID,我只需要获取具有所有过滤器 ID 和组 ID 的项目 ID。
期望的输出:
- 第一个输入:123 -> 返回项目 ID = 3 和项目 ID = 17
- 第二个输入:123,4 -> 返回项 id = 3,因为过滤器 id 123 属于组 id 5,过滤器 id 4 属于组 id 1,并且项 id 3 是唯一具有这两个过滤器的项。李>
- 第三个输入:122,123 -> 返回项目 id =3 和项目 id = 17,因为这两个过滤器 id 属于同一个组。
我对这个查询有点迷茫,很高兴能得到一些帮助。
我会尽量简化它:假设我们有大小的组过滤器和颜色的组过滤器。如果我按尺寸 S 或 M 过滤,则我需要获取所有具有此尺寸的物品。如果我想添加像蓝色这样的颜色,那么答案将通过以下方式削减结果:尺寸为 S 或 M 和颜色为蓝色的项目。所以来自不同组的过滤器可能会削减一些结果
【问题讨论】:
-
您能否以格式化的形式分享输出和示例数据。目前还很难理解
-
我不明白
Table2和FilterGroupID与这个问题有什么关系。实际上,您只需要在Table1和您的过滤器列表之间进行关系划分。他们属于哪个组是无关紧要的
标签: sql sql-server sql-server-2008 subquery