连接两个 SQL tables,其中来自 table 1 的外部 ID 在 table 2 中出现两次

Joining two SQL tables where external ID from table 1 appears twice in table 2

我在加入两个 table 时遇到问题,其中一个 ID 在另一个 table 中多次使用。

以下是 table:

第 1 (groups_table):

Group_ID Group_name
1 第一组
2 第二组

第二(transactions_table):

Transaction_ID 外部_Group_ID 内部_Group_ID
1 1 2
2 2 1

输出应如下所示(要从 table 1 添加组名):

Transaction_ID External_Group Internal_Group
1 第一组 第二组
2 第二组 第一组

您需要加入 groups_table 两次才能获得您想要的结果。让我们先设置您的数据:

if object_id('groups_table') is not null
    drop table groups_table

CREATE TABLE groups_table
    ([Group_ID] int, [Group_name] varchar(12))
;
    
INSERT INTO groups_table
    ([Group_ID], [Group_name])
VALUES
    (1, 'First group'),
    (2, 'Second group')
;

if object_id('transactions_table') is not null
    drop table transactions_table


CREATE TABLE transactions_table
    ([Transaction_ID] int, [External_Group_ID] int, [Internal_Group_ID] int)
;
    
INSERT INTO transactions_table
    ([Transaction_ID], [External_Group_ID], [Internal_Group_ID])
VALUES
    (1, 1, 2),
    (2, 2, 1)
;

然后当您查询表时,您将加入 groups_table 两次:

select 
    tt.Transaction_ID,
    ExternalGroup = g1.Group_name,
    InternalGroup = g2.Group_name
from transactions_table tt
left join groups_table g1
    on tt.[External_Group_ID] = g1.Group_ID
left join groups_table g2
    on tt.[Internal_Group_ID] = g2.Group_ID

这应该 return 结果(参见 Demo):

Transaction_ID ExternalGroup InternalGroup
1 First group Second group
2 Second group First group