无法通过左连接将两个键连接到一个主键

Unable to Join two keys to one Primary key with left join

SELECT teams.teamname AS Home, 
       teams.teamname AS Away 
FROM   game 
       LEFT JOIN teams 
              ON game.awayteam = teams.teamid 
       LEFT JOIN teams AS T 
              ON game.hometeam = T.teamid 

我的表格如下

Game                                     
-GameId(Pk,int),
-HomeTeamId (fk,int),   
-AwayTeamId(fk,int)                     

Teams
-TeamId(Pk,int),
-TeamName(Varchar)

我正在尝试在 query.When 中查看主队和客队名称 我加入表格我的预期结果是主队名称和客队名称,但是在两个表格中只有主队名称被列出。

Home Team|Spikes

Away Team|Spikes

什么时候应该

Home Team|Spikes

Away Team|Raptors

你需要给两个加入一个别名。您正在两次选择第一次连接的结果。

例如

SELECT
  GameId,
  home.TeamName AS Home,
  away.TeamName AS Away
FROM Game
  LEFT JOIN Teams AS away ON AwayTeamId = away.TeamId
  LEFT JOIN Teams AS home ON HomeTeamId = home.TeamId;

如果您将重命名列推送到连接中的 table 表达式,您可以使用 NATURAL JOIN 并避免完全使用范围变量。另外,我不相信你真的需要外连接:

SELECT Home, Away
  FROM game
       NATURAL JOIN
       ( SELECT teamid AS hometeam
              teamname AS home
         FROM teams ) Home
       NATURAL JOIN
       ( SELECT teamid AS awayteam
              teamname AS Away
         FROM teams ) away;