如何在同⼀张数据库表上两次施加左联接(leftouterjoin)!
今天拼sql时遇到⼀个问题:
我有两张表:1.客户档案表(CT_CYK_CustomerBaseInfo),2.客户的基本信息表(T_BD_Customer )。
在客户档案表中有⼀个字段(CFCustNameID),它作为外键和客户基本信息进⾏连接,这个字段代表客户的名称信息。
在客户档案中我还有⼀个字段,它作为外键⼜和客户基本信息⼜有⼀个连接,这个字段代表客户的联系⼈。也就是说客户档案中有两个字段作为外键连接到客户基本信息表中,连接的却⼜不是同⼀条记录。
现在我要查询客户档案的详细信息,刚开始,我拼出的sql如下:
select *
from CT_CYK_CustomerBaseInfo
LEFT OUTER JOIN T_BD_Customer ON CT_CYK_CustomerBaseInfo.CFCustNameID=T_BD_Customer.FID
LEFT OUTER JOIN T_BD_Customer ON CT_CYK_CustomerBaseInfo.CFMainLinkMenID=T_BD_Customer.FID;
接下来测试sql,sql语句有问题,不能同时左链接同⼀张表。
后来我⼜改:
select *
from CT_CYK_CustomerBaseInfo
LEFT OUTER JOIN T_BD_Customer ON CT_CYK_CustomerBaseInfo.CFCustNameID=T_BD_Customer.FID
and CT_CYK_CustomerBaseInfo.CFMainLinkMenID=T_BD_Customer.FID;
这次语法正确了,可是这连接的是满⾜on后两个条件的同⼀条记录,并不是我所要的查询结果。
最后,我把客户的基本信息表进⾏的重新命名,然后修改了sql语句,取得成功,结果如下:sql left join 多表连接
select *
from CT_CYK_CustomerBaseInfo
LEFT OUTER JOIN T_BD_Customer ON CT_CYK_CustomerBaseInfo.CFCustNameID=T_BD_Customer.FID
LEFT OUTER JOIN T_BD_Customer as linkpeople ON
CT_CYK_CustomerBaseInfo.CFMainLinkMenID=linkpeople.FID;
这样就实现了在⼀个数据库表中同时两次左联接。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论