SQL查询使用两列作为同一个表的外键

Mob*_*ion 11 sql

我有两张桌子

表A.

    id ! name ! fk_1_table_B_1 ! fk_2_table_B_2
-------|------|----------------|--------------
    1  | John | 1              | 3
    2  | Paul | 2              | 1
    3  | Anna | 4              | 2
    4  | Alan ! 3              | 1
Run Code Online (Sandbox Code Playgroud)

表B.

    id | code
-------|------
    1  | EN
    2  | US
    3  | FR
    4  | IT
Run Code Online (Sandbox Code Playgroud)

想法是获得以下查询

    id ! name ! code (fk_1_table_B_1) ! code (fk_1_table_B_2)
-------!------!-----------------------!-----------------
    1  | John | EN                    | FR
    2  | Paul | US                    | EN
    3  | Anna | IT                    | US
    4  | Alan ! FR                    | EN
Run Code Online (Sandbox Code Playgroud)

如果表A只有一个来自表BI的FK列就可以

SELECT tableA, name, tableB.code 
FROM tableA, table B
WHERE tableA.fk_1_table_B_1 = tableB.id
Run Code Online (Sandbox Code Playgroud)

如何使用表A作为FK的两列作为B?我应该在SELECT?EN中选择什么?

谢谢

das*_*ght 17

您应该两次加入同一个表,给它两个不同的别名:

SELECT a.id, a.name, b1.code, b2.code
FROM tableA a
JOIN tableB b1 ON b1.id = a.fk_1_table_B_1
JOIN tableB b2 ON b2.id = a.fk_2_table_B_2
Run Code Online (Sandbox Code Playgroud)

请注意此查询如何使用ANSI连接语法以更清晰:不是列出FROM子句中的所有表,而是将每个别名tableBs放在其自己的JOIN子句中.