假设我有三个表:帐户,联系人和地址。要帐户和联系我想分配多个地址。在地址join_type
和join_id
中添加两个字段然后再运行查询更好吗?
SELECT a.*
FROM address a
INNER JOIN contact c ON c.id = a.join_id AND a.join_type = 'CONTACT';
和
SELECT a.*
FROM address a
INNER JOIN account ac ON ac.id = a.join_id AND a.join_type = 'ACCOUNT';
或拥有account_id
和contact_id
代替join_type
和join_id
并运行查询:
SELECT a.*
FROM address a
INNER JOIN contact c ON c.id = a.contact_id;
和
SELECT a.*
FROM address a
INNER JOIN account ac ON ac.id = a.account_id;
或者甚至可能有两个单独的地址表用于帐户和联系?如果我愿意的话,第一种选择对未来是最好的选择,例如还有分配给用户的地址。
答案 0 :(得分:0)
选择a。* 来自地址a INNER JOIN联系人c ON c.id = a.contact_id;
您有多种类型的地址不会导致任何问题,因为contact_id应该始终是唯一的。
我还会考虑使用account_id在地址中添加另一个列,并且还有另一个这样的连接:
选择a。* 来自地址a INNER JOIN帐户a ON a.id = a.account_id;