【发布时间】:2016-05-20 10:14:14
【问题描述】:
我有三个表 - Table_1、Table_2 和 Table_3。以下是每个的样子:
Table_1
ID | TicketID | Rule
---------------------------
1 | 101 | NULL
Table_2
TicketID | Location
---------------------------
101 | A
101 | B
Table_3
Location | Rule
--------------------
A | R1
B | R1
A | R2
B | R2
C | R2
我的目标是填充 Table_1 中的 Rule 列(这应该是 Table_3 中 Rule 列的选择不同)。流程应该是:
- 从 Table_1 中获取 TicketID。在 TicketID 上将 Table_1 连接到 Table_2,并获取与该票证关联的位置。
- 查找 Table_3 并检查需要应用什么规则。检查需要在组级别。例如,在此示例中,工单 101 具有位置 A、B。 Table_3 有针对规则 R1 的 A、B,但也有针对规则 R2 的 A、B、C。正确的规则应该是 R1,因为 Ticket 101 没有分配给位置 C。希望这有意义。实现这一目标的最简单方法是什么?提前致谢!
【问题讨论】:
-
听起来像是功课。你试过什么了?究竟是什么,你坚持?
-
如果一张票只有一个位置(例如,
A),应该怎么办?对于具有 更多 个位置(例如,A, B, C, D)的票证应该怎么办? -
您要插入到第一个表,还是更新第一个表?请显示您想要的输出。
-
另外,
R3在表 3 中是否也只有A和B的行?如果是,应该选择哪条规则? -
@Damien_The_Unbeliever 如果一张票有一个位置 A,那么输出应该类似于“多个”。实际上,这不应该发生。如果它有 A、B、C、D 并且该组合在 Table_3 中不可用,则它会转到另一个表进行相同的检查,但基于不同的属性。
标签: sql sql-server sql-server-2008 tsql sql-server-2012