如何在同一张数据库表上两次施加左联接(left outer join)!
来源:互联网 发布:json get post 编辑:程序博客网 时间:2024/04/20 00:27
今天拼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语句,取得成功,结果如下:
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;
这样就实现了在一个数据库表中同时两次左联接。
- 如何在同一张数据库表上两次施加左联接(left outer join)!
- SQL 联接--->左向外联接 (左外联接 ..left outer join..on)
- hive left outer join 两次
- mysql 同一张表查询 left join
- 关于MySql 4.0.12左联接left outer join的一些问题
- Left Join(左联接) 详解
- MySQL查询--使用LEFT JOIN解决同一张表查询
- join联接查询--SQL中 inner join、 left join 、right join、 outer join之间的区别
- left join(左联接)right join(右联接) inner join(等值连接) 区别
- 内连接<inner join>,左外连接<left outer join>,右外连接<right outer join>
- 关联同一张表两次
- 左外连接查询语句(left outer join)
- SQL SERVER 2012 左外关联 left outer join
- 数据库 left join(或者left outer join),right join(或者right outer join),inner join用法举例
- left outer join partition
- LEFT OUTER JOIN
- 《数据库SQL实战》两次left join
- left outer join right outer join
- 教育孩子法宝
- Hibernate框架ORM的实现原理(资料)
- js去除所有的空格
- 关于DB2恢复时候不能停止前滚的问题
- C++STL快速熟悉
- 如何在同一张数据库表上两次施加左联接(left outer join)!
- 那些花儿
- 用mysql作openldap的后台数据库
- 系统信息
- 客户端开发工具选型注意事项
- get url 地址 参数 最大长度
- 图片驱动的计算机技术——Sikuli from MIT
- Ubuntu的安装
- JOIN ON后面的过滤条件和where后面的过滤条件有什么不同?