【发布时间】:2014-04-17 19:45:13
【问题描述】:
我有一个表和另一个表中的相关属性列表。它看起来像这样:
表格单位:
ID | State | ...
----------------
1 | 10 | ...
2 | 15 | ...
3 | 10 | ...
(这里的状态没有意义,我只是添加它以表明该表包含额外的列)
表格形状:
ID | Unit_ID (FK) | Shape
-------------------------
1 | 1 | 40
2 | 1 | 40
3 | 1 | 45
4 | 3 | 10
所以基本上Unit 中的每一行都可以有各种相关的形状。形状的顺序并不重要,但一个形状可以关联多次。
在我的示例中,Units 具有以下形状:
-
Unit 1:40, 40, 45 -
Unit 2:无 -
Unit 3:10
到目前为止一切顺利。这在获取/更新给定Unit-ID 的完整形状集时效果很好。
但我需要选择所有具有特定关联Shapes 列表的Units。例如,我想查找所有具有Shapes 40, 40, 45 的Units(应该返回Unit_ID 1)。
我已经找到了一些使用关系除法的类似问题和文章,但我不确定这是否可行,因为大多数解决方案无法处理多次出现的值。如果我搜索40, 45,我想要完全匹配,我希望查询在我的示例中不返回任何结果,因为没有Unit 与Shapes 完全匹配(我需要一个查询来处理这个情况也是如此 - 选择包含子集的 Units 和 Shapes - 但是一旦我知道如何搜索精确匹配,这可能会很容易)。
我使用的是 SQL Server 2012。
【问题讨论】:
标签: sql sql-server relational-algebra