发布于 2018-05-07 12:01:27
对于表中存在的每个外键引用;必须对主/基表进行单独的连接以获取相关数据。
在您的示例中,再次将播放机添加到查询中,并将其加入到Goals.player_assist;同时将播放机加入到Goals.Player_Score中。
至于为什么:相同的join不能同时获得两个数据,因为它们代表着与players表的不同关系。
在SQL中,这类似于:
SELECT G.*
, PS.id_Player as ScoredByID_Player
, PS.first_name as ScoredByfName
, PS.last_name as ScoredBylName
, PA.id_Player as AssistedByID_Player
, PA.First_name as AssistedByfName
, PA.Last_name as AssistedBylName
FROM GOALS G
INNER JOIN Players PS
on G.id_Player = PS.Player_Score
LEFT JOIN Players PA
on G.id_Player = PA.Player_Assist
注意,我们将球员的场名化名,这样我们就知道哪些是得分,哪些是辅助。我们还别名表的可读性,因为我们必须复制“播放器”和引擎,以跟踪我们指的表;我们必须让它们“命名”不同。
我第二次离开join (外部)的原因是,不是所有的分数都有助攻,但是所有的分数都有得分的人。因此,第一次加入球员可以是内部加入,但第二次加入可能没有助攻;我们可能仍然希望看到所有进球的细节。如果我们使第二次加入一个内在的,我们将失去所有的分数,如果一个助攻没有参与。
https://stackoverflow.com/questions/50220105
复制