Mysql 从3个表中查询特定数据

Mysql 从3个表中查询特定数据,mysql,Mysql,我在查询返回玩家的id,name以及玩家的第一场比赛date,matchid和对手时遇到问题 我想为球员的最后一场比赛同样的信息 `players` id | name 1 | playername10 2 | playername22 3 | playername33 4 | playername45 5 | playername55 `matches` id | gamedate | opponent 1 | 2011-01-01 | opponen

我在查询返回玩家的
id
name
以及玩家的第一场比赛
date
matchid
对手时遇到问题

我想为球员的最后一场比赛同样的信息

`players`
 id | name

  1 | playername10
  2 | playername22
  3 | playername33
  4 | playername45
  5 | playername55

`matches`
  id | gamedate   | opponent

1    | 2011-01-01 | opponent1
2    | 2011-01-02 | opponent2
3    | 2011-01-03 | opponent3
4    | 2011-01-04 | opponent4
5    | 2011-01-05 | opponent5


`playermatchscores`
id | matchid |      player | goals

 1 |   1     |  playername10 |  1  
 2 |   1     |  playername22 |  2  
 3 |   2     |  playername10 |  1 
 4 |   1     |  playername33 |  1
 5 |   3     |  playername45 |  2
 6 |   4     |  playername55 |  1
 7 |   2     |  playername55 |  1
 8 |   3     |  playername22 |  2
 9 |   5     |  playername55 |  1
其中
matchid
是表
matches
id
的外键


我尝试了几个问题,但我可能用了错误的方法。如何编写获取所需信息的方法?

有关左连接的信息:

我还没有测试这个选择

另外,你也应该在playermatchscores中使用外键作为player表的player_id

在作出有关更改后:


SELECT players.*, matches.*, 
FROM playermatchscores
LEFT JOIN players ON players.name = playermatchscores.player
LEFT JOIN matches ON matches.id = playermatchscores.matchid
ORDER BY matches.gamedate ASC
WHERE players.id = 3
LIMIT 1
对于最后一场比赛,将ASC替换为DESC


另外,这不是最好的方法,但应该有效。

我已经编辑了这个问题,因为我可能需要在两个查询中完成它。请看我的编辑。我还通过玩家ID查找玩家。因此我会在查询中的某个地方使用
WHERE players.ID=3
。为什么这不是最好的方法?因为它只返回一个玩家的信息。所有球员最后/第一场比赛查询都需要修改。

SELECT players.*, matches.*, 
FROM playermatchscores
LEFT JOIN players ON players.name = playermatchscores.player
LEFT JOIN matches ON matches.id = playermatchscores.matchid
ORDER BY matches.gamedate ASC
WHERE players.id = 3
LIMIT 1