我将客户电话和传真号码保存在同一个数据库表中。哪个没有异常。 并非所有客户都有电话号码,而其他客户没有传真号码。
我需要查看电话和传真,即使它们是空的。
在tbl_customers
表格中,我有2个专门用于记录默认电话和默认传真的列。他们只是存储来自tbl_phonenumbers
的记录ID。
这是电话:
SELECT c.customername, p.phonenumber
FROM `tbl_customers` c
LEFT JOIN `tbl_phonenumbers` p ON c.customerid = p.customerid
WHERE c.defaultphone = 22
现在我需要添加默认的faxnumber id,它与默认手机的想法相同。
我不太确定如何解决这个问题。当然,我可以创建一个名为'tbl_faxnumbers`的全新数据库表,并为此创建LEFT JOIN。但我宁愿为电话和传真号码保留一张表。
这是LEFT JOIN的可能性吗?
答案 0 :(得分:2)
您可以多次加入同一个表,只要每个联接都有一个唯一的别名,这样DB服务器就可以找出您正在讨论的表的那些额外版本的内容:
SELECT ...
FROM maintable
JOIN othertable AS copy1 ON copy1.somefield = ...
JOIN othertable AS copy2 ON copy2.somefield = ...
对于您的情况,我会在电话号码表中添加“类型”标识符字段,以便您可以指出哪个是电话号码,哪个是传真号码。那你就做了你的联接:
SELECT ..., phones.phonenumber, faxes.phonenumber
...
JOIN tbl_phonenumbers AS phones ON (... = phones.id) AND (phones.type = 'phone')
JOIN tbl_phonenumbers AS faxes ON (... = faxes.id) AND (faxes.type = 'fax');
答案 1 :(得分:0)
为什么不在tbl_phonemumbers上添加一个faxnumber字段?