我有一张名为Contact
的表格,代表现实生活中的联系人 - 因此有姓名,地址,电话号码等 - 可以是个人或公司。它们显然具有不同的属性,例如一个人有出生日期。
如何在数据库中构建它?
我尝试过这样做.. Contact
包含字段id
,displayName
,numViews
,type
和entityId
(fk),并添加了两个表来表示Person
和Company
。因此,如果联系人是人,那么type = 'Person'
和entityId
会匹配其表中人员的ID。我无法弄清楚如何选择即将到来的生日的所有联系人。注意:我知道即将到来的生日的sql - 所以我可以在Person表上执行此操作 - 这是我坚持的加入。我似乎需要加入一个表,其中表的名称在我的type
列中!
我忽略了一些简单的事情吗?也许我的结构错了?
答案 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