多表连接

多表连接

三张及以上表连接的时候

table1 JOIN table2 on condition1/2

JOIN table3 on condition1/3还是2/3呢?

第二个join后面的第三张表是直接默认和第一张表,以某个字段相连吗?

可不可以和第二张表连呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!不是默认和第一张表以某个字段相连接,可以是第二个join 后的table3和第二个表table2以某个字段相连

2、可以和第二个表相连,在 on 后写上table3与table2关联的条件即可。如t_dept 中增加一列grade ,使用grade字段让t_salgrade 与t_dept表相关联

t_dept表

https://img1.sycdn.imooc.com//climg/645617260995a88e02640273.jpg

t_salgrade 表

https://img1.sycdn.imooc.com//climg/6456174809a74a1b01120124.jpg

t_emp表

https://img1.sycdn.imooc.com//climg/645617710972779803660127.jpg

查询sql

https://img1.sycdn.imooc.com//climg/645617bc0908eb6407180241.jpg


祝学习愉快~

  • 慕设计4457883 提问者 #1

    老师我还是没太明白,比如:

    表1 left join 表2 right join 表3 left join 表四

    这样写的话,表1234到底是谁在和谁、怎样连接?左右连接怎么区分?应该怎么表达呢?

    2023-05-08 15:13:47
  • 好帮手慕小猿 回复 提问者 慕设计4457883 #2

    同学,你好!后面的课程会讲外连接,同学可以继续向后学习,链接:https://class.imooc.com/lesson/2106#mid=49930

    t_emp表数据记录

    https://img1.sycdn.imooc.com//climg/6458ab8b097f6ef703770145.jpg

    t_dept记录

    https://img1.sycdn.imooc.com//climg/6458abca09bf38d001940262.jpg

    a表记录

    https://img1.sycdn.imooc.com//climg/6458abff09d0196302760074.jpg

    以下sql语句为例进行拆分

    select e.empno,e.ename,d.dname from t_emp e left join t_dept d on e.deptno=d.deptno right join  a on a.edn=d.dname

    先执行t_emp left join t_dept  ,因left join 以左表为主,以左表数据为基础,所有左表数据都保留,与t_dept 部门关联,注意陈浩即使没有部门编号,数据也被保留下来了

    https://img1.sycdn.imooc.com//climg/6458ad1009448a1e05220237.jpg

    然后再执行right join  a   ,以a表为主,a表里的数据都保留

    https://img1.sycdn.imooc.com//climg/6458af7f09f303cb02840072.jpg


    与t_dept表中dname 关联表,与a表中edn中相同的数据都保留,与上一步的查询结果相匹配。由于陈浩没有dname 数据被过滤出去。


    https://img1.sycdn.imooc.com//climg/6458ab5f09d6918909110247.jpg


    祝学习愉快~

    2023-05-08 16:17:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师