当前位置:   article > 正文

sql 语句left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on下去?_left join解决多表关联问题

left join解决多表关联问题

今天这个帖子要解决一个问题:oracle数据库表间通过left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on 下去?
利用sqlfiddle创建三张基本表结构先:

create table company(company_id int,company_name varchar2(10),department_id int,employee_id int);
create table department(department_id int,department_name varchar(10));
create table employee(employee_id int,employee_name varchar(10));
insert into company values(1,'HSBC',101,1001);
insert into department values(101,'IT');
insert into employee values(1001,'Steve');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
select * from company;
select * from department;
select * from employee;
  • 1
  • 2
  • 3

在这里插入图片描述
在这里插入图片描述

为了印证,我写下了如下代码:

select t1.*,t2.department_name,t3.employee_name
from company t1 
left join department t2
on t1.department_id=t2.department_id
left join employee t3
on t1.employee_id=t3.employee_id;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
结果是可以出来预想的结果的,也就是说left join是右边表向左join过程实际上是合并的过程,再继续left join新表的时候实际上是前面所有集合向新表抛出on. 随着left join一路向左,并非只能是最左边的关联表与新表关联,其实母表可以一直on 下去

另外,顺表解决一个疑问,left join关联的时候,左边表join on的字段value集大于右边表,拼合成的表如何取值?是保留左边所有value集,右边没有就为空吗?
譬如新增一条记录:

insert into company values(1,'HSBC',102,1001);
  • 1

在这里插入图片描述
没错,left join关联的时候,左边表join on的字段value集大于右边表,拼合成的表是保留左边所有value集,右边没有就为空。

反之,left join关联的时候,左边表join on的字段value集小于右边表,拼合成的表如何取值?是只取左边所有value集,右边多出来的value集不取?

insert into employee values(1002,'Luke');
  • 1

在这里插入图片描述
结论:反之,left join关联的时候,左边表join on的字段value集小于右边表,拼合成的表是只取左边所有value集,右边多出来的value集不取。

最后,借楼反馈下 left join /join /where连接表间关系的区别:
select t1.column,t2.column
from t1
left join t2
on
t1.indexno=t2.indexno;
这个意思是以右边表为主表,关联左边t2表,如果t2.indexno能有1个match则取这一行的t2.column,如果有超过1个match的,那么t1主表开始膨胀。如果0个match,那么t1.indexno依然出现在查询结果,只是t2.column出现null值;

join 则不然,
select t1.column,t2.column
from t1
join t2
on
t1.indexno=t2.indexno;
这个意思t1表和t2表相互关联,如果t2.indexno能有1个match则取这一行的t2.column,如果有超过1个match的,那么表开始膨胀。如果0个match,那么t1和t2取全集然后去掉空的记录;
where和join相同原理。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/724972
推荐阅读
相关标签
  

闽ICP备14008679号