我有一张主表' Player
'与' PlayerId
'作为primary key
。
我有三个表格与' player
'表。一个表可能比另一个表具有更多记录。我需要从每个表中获取不同行中玩家的所有记录。
球员表
PlayerId int(PK),
PlayerName Varchar(25)
STARTUP表
PlayerId int(FK),
STARTUPDATE Date
重新启动表
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
答案 0 :(得分: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