将一个表中的多个列连接到另一个表中的单个列

Cri*_*ter 12 mysql sql database join

我正在尝试学习如何将一个表中的多个列连接到另一个表中的单个列.

这是我最简单形式的表结构:

球队

id | team_name |
1  |   teamA   |
2  |   teamB   |
3  |   teamC   |
4  |   teamD   |
Run Code Online (Sandbox Code Playgroud)

交易

id |  team_1 (FK to teams.id)  |  team_2 (FK to teams.id)  |
1  |            1              |              2            |
2  |            3              |              4            |
Run Code Online (Sandbox Code Playgroud)

这是我当前的SQL,它将trades.team_1加入teams.id:

SELECT teams.team_name AS team1, teams.team_name AS team2, trades.team_1, trades.team_2
FROM teams
JOIN trades ON (trades.team_1 = teams.id);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何创建第二个连接,也将trades.team_2加入trades.id?

这意味着trades.team_1 AND trades.team_2将加入trades.id

我想回来的结果是:

team1  |  team2  |  team_1  |  team_2  |
teamA  |  teamB  |    1     |     2    |
teamC  |  teamD  |    3     |     4    |
Run Code Online (Sandbox Code Playgroud)

aF.*_*aF. 43

像这样:

select t1.team_name as team1, t2.team_name as team2, t.team_1, t.team_2
from trades t
inner join teams t1 on t1.id = t.team_1
inner join teams t2 on t2.id = t.team_2;
Run Code Online (Sandbox Code Playgroud)

  • Jeez,相隔10秒,我们在同一个答案附近该死的.=) (3认同)

Cro*_*tab 11

SELECT t1.team_name AS team1, t2.team_name AS t2, tr.team_1, tr.team_2
FROM trades tr
INNER JOIN teams t1 ON t1.id = tr.team_1
INNER JOIN teams t2 ON t2.id = tr.team_2
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 5

尝试再次加入teams表,但使用两个不同的别名:

SELECT
    teams1.team_name AS team1,
    teams2.team_name AS team2,
    trades.team_1,
    trades.team_2
FROM trades
JOIN teams AS teams1 ON trades.team_1 = teams1.id
JOIN teams AS teams2 ON trades.team_2 = teams2.id
Run Code Online (Sandbox Code Playgroud)