无法通过左连接将两个键连接到一个主键
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;
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;