使用 MySQL LEFT JOIN 进行多表连接
在这个场景中,我们遇到了连接三个表的挑战:'Persons' ,“恐惧”,以及“Person_Fear”。目标是显示“Persons”表中的所有记录以及任何相关的恐惧,即使有些人没有恐惧。
最初,提供的 LEFT JOIN 查询尝试将“Person_Fear.PersonID”与“连接” Person_Fear.FearID',会产生不正确的结果。正确的做法是根据正确的外键关系将 'Person_Fear' 与 'Persons' 和 'Fears' 连接起来。
解决方案:
SELECT Persons.Name, Persons.SS, Fears.Fear FROM Persons LEFT JOIN Person_Fear ON Person_Fear.PersonID = Persons.PersonID LEFT JOIN Fears ON Person_Fear.FearID = Fears.FearID
这个修改后的查询有效地将“Persons”连接到'Person_Fear' 和 'Fears' 通过各自的外键。 “Persons”和“Person_Fear”之间的 LEFT JOIN 确保包含“Persons”表中的所有记录,无论它们是否有任何相关的恐惧。
替代解决方案:
SELECT Persons.Name, Persons.SS, Fears.Fear FROM Persons LEFT JOIN Person_Fear INNER JOIN Fears ON Person_Fear.FearID = Fears.FearID ON Person_Fear.PersonID = Persons.PersonID
这种替代方法利用 'Person_Fear' 和 'Person_Fear' 之间的 INNER JOIN “恐惧”过滤到相关的恐惧。随后的 LEFT JOIN 与“Persons”仍然确保所有个人都包含在结果中。
以上是如何使用 LEFT JOIN 正确连接 MySQL 中的三个表来检索所有人员及其相关的恐惧?的详细内容。更多信息请关注PHP中文网其他相关文章!