gpt4 book ai didi

来自同一表的 MySQL 2 LEFT JOIN

转载 作者:行者123 更新时间:2023-11-29 07:05:01 25 4
gpt4 key购买 nike

我将客户的电话号码和传真号码保存在同一个数据库表中。这不是不正常的。并非我所有的客户都有电话号码,而其他人则没有传真号码。

我需要同时查看电话和传真,即使它们是空的。在 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 有这种可能性吗?

最佳答案

您可以多次连接同一个表,只要每个连接都有一个唯一的别名,这样数据库服务器就可以找出您正在谈论的表的哪些额外版本:

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');

关于来自同一表的 MySQL 2 LEFT JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com