我试图将两个单独的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