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