多个电子邮件和电话数据库查询MySQL

时间:2013-12-11 03:07:40

标签: php mysql

我想在MySQL中存储联系人,其中一个人可以拥有许多电子邮件和电话号码,我已经创建了下图。

请帮助我获取最佳查询,以获取此人的所有电子邮件和手机联系人。

但是,如果这个架构不好请告诉我一个更好的架构。

我正在使用下面的查询,它给我发电子邮件:

SELECT person.id, first_name, last_name, emails.email
  FROM `person_has_emails`
LEFT JOIN person ON person.id = person_has_emails.person_id
LEFT JOIN emails ON person_has_emails.emails_id = emails.id
  LIMIT 0 , 30

但是,我想要从单个查询返回的first_name,last_name,email,phone_number。请指教。

MySQL simple database schema

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是:

SELECT A.first_name, A.last_name, C.email, E.phone FROM person A
LEFT JOIN person_has_emails B on B.person_id = A.id
LEFT JOIN emails C ON B.emails_id = C.id
LEFT JOIN person_has_phone D ON D.person_id = A.id
LEFT JOIN phone E ON D.phone_id = E.id

但这会产生开销。电子邮件将与电话号码配对,因此,如果您有一个有3个电子邮件和2个电话号码的人,那么该人将共有6行。

现在,继续使用架构 - 您应该删除person_has电子邮件和person_has_phone表,并将电子邮件和电话直接链接到人。这是因为一个电子邮件或电话不能属于多个人。或者可以吗?