我有三个MySQL表:'people','people2id','places'。第一个存储有关人员的信息,其中“地点”表存储有关其地址的信息。中间的一个'people2id'将这两个表互连(可能是一个人有两个或更多地址)。
现在我想转到某个人的个人资料并查看他的个人资料,以及他的相关地址。我为此创建了这个查询:
SELECT * FROM people p
JOIN people2id e ON p.peopleId = e.peopleId
JOIN places a ON a.peopleId = e.peopleId
WHERE p.peopleId = number
当此人具有关联的地址时,此功能正常,否则将失败。我不明白我是否应该使用任何类型的JOIN或使用UNION。
答案 0 :(得分:4)
将JOIN
更改为LEFT JOIN
,即
SELECT * FROM people p
LEFT JOIN people2id e ON p.peopleId = e.peopleId
LEFT JOIN places a ON a.peopleId = e.peopleId
WHERE p.peopleId = number
使用LEFT JOIN
将包含来自people
的所有记录,无论它们是否包含相关记录。
答案 1 :(得分:2)
UNION 用于从两个不同的查询中获取相同类型的信息,并将它们作为单个结果集返回
JOIN 用于将行和数据添加到行(不是很简单但你可以这样看)
答案 2 :(得分:0)
您应该使用LEFT JOIN
。
SELECT * FROM people p
JOIN people2id e ON p.peopleId = e.peopleId
LEFT JOIN places a ON a.peopleId = e.peopleId
WHERE p.peopleId = number