使用表中的多个外键选择一个主键

时间:2014-02-10 16:40:23

标签: sql

所以我不知道如何使用单词正确解释这一点,所以我只会解释我正在尝试做什么。我创建了一个包含两个表的数据库,一个是NBA球队的名单,其中一个主键位于1-30之间。另一个表列出了包含Team1,Team2和Winner列的游戏时间表,所有这些都是外键(因此它们是1-30之间的数字)。我正在尝试编写一个查询,它从调度表中获取所有人,但不是从外键中取出数字1-30,我想拥有实际的团队名称。

SELECT schedule.Date, schedule.GameTime, TEAMS.Team_name, TEAMS.Team_name, schedule.Team1_score, schedule.Team2_score, TEAMS.Team_name as Winner 
FROM schedule
left join TEAMS on schedule.Team1 = TEAMS.Team_key

这是我到目前为止所写的内容,但我不知道如何比较schedule.Team2 = TEAMS.Team_key以获取其他团队的名称,或者比较schedule.Winner = Teams.Team_key以获得获胜者的名字。

所以现在我有:

日期时间Team1 Team2 Team1Score Team2Score Winner

....... ........湖人湖人................... ........... .........湖人队

而不是我想要的东西:

日期时间Team1 Team2 Team1Score Team2Score Winner

....... ........湖人队凯尔特人队................... ........... .........凯尔特人队

感谢。

1 个答案:

答案 0 :(得分:0)

嗯,你有三个外键,所以你可以这样做:

SELECT t1.team_name AS team_one, 
  t2.team_name AS team_two, 
  t3.team_name AS winner FROM schedule s
INNER JOIN teams t1 ON s.team1 = t1.team_key
INNER JOIN teams t2 ON s.team2 = t2.team_key
INNER JOIN teams t3 ON s.winner = t3.team_key

你有3个连接到同一个表,使用不同的别名。