两个表之间的MySQL内部联接
我正在尝试连接两个表之间的MySQL内部联接,mysql,sql,inner-join,Mysql,Sql,Inner Join,我正在尝试连接MySQL中的两个表。这是我的桌子: 游戏表: GameID Date/Time PlayerOneID PlayerTwoID 13 12/10/2013 10:53:29 PM 1 2 14 12/10/2013 10:57:29 PM 1 2 15 12/10/2013 10:58:29 PM 2 1 1
MySQL
中的两个表。这是我的桌子:
游戏表:
GameID Date/Time PlayerOneID PlayerTwoID
13 12/10/2013 10:53:29 PM 1 2
14 12/10/2013 10:57:29 PM 1 2
15 12/10/2013 10:58:29 PM 2 1
1 Dan
2 Jon
我有另一个表包含一个球员的ID和球员的名字
玩家表:
GameID Date/Time PlayerOneID PlayerTwoID
13 12/10/2013 10:53:29 PM 1 2
14 12/10/2013 10:57:29 PM 1 2
15 12/10/2013 10:58:29 PM 2 1
1 Dan
2 Jon
我希望生成的表如下所示:
GameID Date/Time PlayerOneID PlayerTwoID
13 12/10/2013 10:53:29 PM Dan Jon
14 12/10/2013 10:57:29 PM Dan Jon
15 12/10/2013 10:58:29 PM Jon Dan
以下是我目前正在做的事情:
SELECT Games.GameID, Games.`Date/Time`, Players.Name, PlayerTwoID
FROM Games
INNER JOIN Players
ON PlayerOneID = Players.ID
这得到了玩家的名字,但我找不到其他地方也能得到玩家的名字。我尝试过使用两个内部联接,但都不起作用。我已经阅读了很多关于堆栈的帖子,但是我没有找到任何有效的解决方案。我是MySQL新手,所以后续的解释会很有帮助。如果您的思路正确,您确实需要加入两次玩家表,如下所示:
SELECT Games.GameID, Games.`Date/Time`, p1.Name, p2.Name
FROM Games
INNER JOIN Players p1
ON PlayerOneID = p1.ID
INNER JOIN Players p2
ON PlayerTwoID = p2.ID
您可能错过了使用别名(p1、p2)来区分要加入的两个Players表副本
select GameID, p1.name playerOneName,p2.name playerTwoName from
games inner join players p1 on games.playerOneID=p1.id
inner join players p2 on games.playerTwoID=p2.id
order by GameID asc;
谢谢!不过这真的很奇怪。。我已经试过了,但没用。可能是因为我使用了Players.Name,Players.Name而不是p1.Name,p2.Name吗?@Jonathan-Ha,是的,只是更新了我的答案,以表明这一点。现在有了意义。谢谢你的帮助!