MySQL - 如何将Company OR Person表加入Contact表

时间:2014-02-25 14:40:05

标签: php mysql

我有一张名为Contact的表格,代表现实生活中的联系人 - 因此有姓名,地址,电话号码等 - 可以是个人或公司。它们显然具有不同的属性,例如一个人有出生日期。

如何在数据库中构建它?

我尝试过这样做.. Contact包含字段iddisplayNamenumViewstypeentityId(fk),并添加了两个表来表示PersonCompany。因此,如果联系人是人,那么type = 'Person'entityId会匹配其表中人员的ID。我无法弄清楚如何选择即将到来的生日的所有联系人。注意:我知道即将到来的生日的sql - 所以我可以在Person表上执行此操作 - 这是我坚持的加入。我似乎需要加入一个表,其中表的名称在我的type列中!

我忽略了一些简单的事情吗?也许我的结构错了?

1 个答案:

答案 0 :(得分:1)

使用您当前的表结构,这样的方法将起作用:

Select
<whatever fields>
FROM Person 
INNER JOIN Contact
   ON Contact.type = 'Person' 
  AND Contact.entityId = Person.id

假设您在Person中有一个birthDate字段,您还可以输入类似于此的where子句:

WHERE DATEDIFF(Person.birthdate, NOW()) BETWEEN 1 AND 30