所以我不知道如何使用单词正确解释这一点,所以我只会解释我正在尝试做什么。我创建了一个包含两个表的数据库,一个是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
....... ........湖人队凯尔特人队................... ........... .........凯尔特人队
感谢。
答案 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个连接到同一个表,使用不同的别名。