2016-06-07 58 views
0

我有一个主表'Player'和'PlayerId'作为primary keyMySQL查询从多个表中获取记录

我有三个表链接到'player'表。一张表可能比另一张表有更多的记录。我需要从每张表格的不同行中获取播放器的所有记录。

PLAYER表

PlayerId int(PK), 
PlayerName Varchar(25) 

STARTUP表

PlayerId int(FK), 
STARTUPDATE Date 

REBOOT表

PlayerId int(FK), 
REBOOTDATE Date 

SHUTDOWN表

PlayerId int(FK), 
SHUTDOWN Date 

如下面给出的查询:

PLAYERNAME STARTUPDATE  REBOOTDATE  SHUTDOWNDATE 
PLAYER1  12/2/2015 11:57 12/2/2015 17:30 12/2/2015 20:00 
PLAYER1  12/2/2015 14:57 12/2/2015 15:30 
PLAYER1  12/2/2015 12:30 
PLAYER1  12/2/2015 10:30 
+2

使用[JOIN](http://dev.mysql.com/doc/refman/5.7/en/join.html) – Arulkumar

+0

您可以使用加入,请注明您的表中只有我们可以写查询 –

+0

其他三个表是否有'PlayerId'作为外键?或者'Player'和其他三张桌子之间的关系密钥是什么? – Arulkumar

回答

0

看到您预期的结果,该PlayerId不匹配的所有表。在这种情况下,你需要使用LEFT JOIN

SELECT PL.PlayerName, ST.StartupDate, RE.RebootDate, SH.ShutDownDate 
FROM Player PL 
LEFT JOIN Startup ST ON ST.PlayerId = PL.PlayerId 
LEFT JOIN Reboot RE ON RE.PlayerId = PL.PlayerId 
LEFT JOIN Shutdown SH ON SH.PlayerId = PL.PlayerId 
相关问题