我有一个用户表和一个联系信息表,以便每个用户可以拥有多个电话号码和多个电子邮件地址。有没有标准的方法来设置和检索他们的主要联系信息?
“人类”表
ID | name
1 | John
2 | Joan
“human_contact”表
ID | contact_type | contact_info | user_id
1 | email | john@a.com | 1
2 | email | johnny@b.net | 1
“门票”表
ID | human_id | event_date
1 | 1 | 2017-08-01
如果John通常使用johnny@b.net,我如何将该行标记为他的最爱并为大多数查询检索该行?
SELECT *
FROM tickets
LEFT JOIN humans
ON tickets.human_id=humans.ID
LEFT JOIN human_contact
ON human_contact.human_id=humans.ID
WHERE tickets.ID='112'
答案 0 :(得分:0)
您可以使用名为 fav 的额外颜色,它将具有布尔值。这可以帮助你首先找到他是否有任何赞成使用支票,其中fav == true,然后继续使用该contact_info,或者如果用户没有任何收藏,那么请按照您的常规查询。
即,
if( query( fav==1 for atleast 1 tuple )){
return tuple with fav==1;
else{
query ( usual query to get contact_info );
return query_result;
}
更容易理解。希望这有帮助。