1

我有三个 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 来解决这个问题。

4

3 回答 3

4

更改JOINLEFT 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

UsingLEFT JOIN将包括来自 的所有记录people,无论它们是否包含关联记录。

于 2013-09-26T18:00:53.203 回答
2

UNION用于从两个不同的查询中获取相同类型的信息并将它们作为单个结果集返回

JOIN用于向行添加列和数据(不是那么简单,但您可以像这样看到它)

于 2013-09-26T18:00:38.203 回答
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
于 2013-09-26T18:01:51.863 回答