我试图将两个单独的sql语句的输出合并到一个表中。我在一个数据库中有一个具有关联ID的团队名称列表,在另一个数据库中有一个具有匹配列表的数据库。例如

Teams
-----------------
id   name
1    Arsenal
2    Aston Villa

Matches
--------------------------------
id   home_team_id   away_team_id
1    1                2

在比赛数据库中,主队ID和客队ID是球队数据库中ID的外键。我要做的是输出match id和matches数据库中与id相关联的团队名称。预期产量:
match_id        home_team_name      away_team_name
---------------------------------------------------
1               Arsenal             Aston Villa

我现在有两个精选语句。
SELECT match_id, name as home_team_name
FROM matches, teams
WHERE home_team_id = id;

SELECT match_id, name as away_team_name
FROM matches, teams
WHERE away_team_id = id;

第一个select语句输出match id和主队的名称,第二个输出match id和客队的名称。
有没有什么方法可以用我当前的数据库设计来实现所需的输出?

最佳答案

你可以:

SELECT m.id, t1.name as home_team_name, t2.name as away_team_name
FROM `match` m
INNER JOIN teams t1 ON t1.id = m.home_team_id
INNER JOIN teams t2 ON t2.id = m.away_team_id

这会将match table与team s table连接两次,以获取两个团队的名称。
sqlfiddle demo
注意,我正在转义`match`因为它是areserved word

10-01 23:28
查看更多