我有一个电话号码表,看起来像:
contactType| country | areaCode| exchangeCode| localNumber| id| createdDate| lastModifiedDate| createdBy| lastModifiedBy|
地址表如下所示:
contactType| street1 | street2| city| state| zip| country| id| createdDate| lastModifiedDate| createdBy| lastModifiedBy|
人员表如下所示:
| id | firstName | lastName | email | birthdate | phoneNumbers | addresses | gender | createdDate | lastModifiedDate | createdBy | lastModifiedBy
注意:phoneNumbers和address是外键,分别指向phoneNumber和Address的ID。
我的问题:我该如何找到那里有地址和电话号码的人?我知道这将需要以某种方式加入,但我不知道如何。
我看过this,但是我对JOIN在其中的工作方式/原因感到困惑。
任何帮助表示赞赏
最佳答案
如果我正确理解了这个问题,并且您只想列出每个表中与“人”相关的所有字段(我将在每个表的末尾保留三个元数据字段),那么您将需要:
select p.id, p.firstName, p.lastName, p.email, p.birthdate,
pn.contactType, pn.country, pn.areaCode, pn.exchangeCode, pn.localNumber,
a.contactType, a.street1, a.street2, a.city, a.state, a.zip, a.country
from person p
inner join PhoneNumber pn
on p.id = pn.id
inner join address a
on p.id = a.id
如果两个表中的“ country”和“ contactType”相同,则可以省略一个或另一个,或者如果单个ID可以存在多个contactTypes / countries,则可以在这些字段上联接。
关于mysql - 结构表以保存数组-MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30921827/