整理多表联合查询

--两张表联合查询
select  *  from  emp e, dept d where e.deptno = d.deptno ;   --寻找两张表的关联处,也就是都有deptno使之相等

select  e.empno, e.ename , d.deptno, d.dname, d.loc  from  emp e, dept d where e.deptno = d.deptno;   --按照给定的列显示
   
   
   --查询员工的上级领导   自己关联自己    
   select  e.empno, e.ename, e1.empno, e1.ename  from emp e,emp e1 where e.mgr= e1.empno;
   select * from dept;
   --查询员工的上级领导和部门名称
     select e.empno, e.ename, e1.empno, e1.ename,d.dname
       from emp e, emp e1, dept d
      where e.empno = e1.mgr and e.deptno = d.deptno; 
      --查询每个员工的员工编号,姓名,部门名称,工资等级和他的上级的姓名,工资等级
      select e.empno,
             e.ename,
             d.dname,
             decode(s.grade,'1','一级','2','二级','3','三级','4','四级','5','五级','无级'),
             e1.empno,
             e1.ename,
             decode(s1.grade,'1','一级','2','二级','3','三级','4','四级','5','五级','无级')
         
        from emp e, dept d, salgrade s, emp e1, salgrade s1
       where e.deptno = d.deptno
         and e.mgr = e1.empno
         and e.sal between s.losal and s.hisal
         and e1.sal between s1.losal and s1.hisal;
                --查询每一个员工的部门
  --两张表做关联查询时,其中一张表要查询全量的数据,并且不会因为另一张表的关联而被筛选掉
  --在两张表关联的时候,非全量表的关联字段后面加上   “(+)” 就可以做外连接查询
  
   select * from dept d,emp e where d.deptno =  e.deptno(+);
     
              
              
 
 select *  from dept
      
      --左连接/   做外连接查询时,全量表在左边就是左连接
         select * from dept d,emp e where d.deptno =  e.deptno(+);
      
      --右连接  做外连接查询时,全量表在右边就是右连接
      
         select * from emp e, dept d where  e.deptno(+) = d.deptno;
      
      --查询员工的编号,姓名和他的上级领导的编号,姓名
      select  e.empno, e.ename, e1.empno, e1.ename  from emp e , emp e1 where e.mgr = e1.empno;
      --这样的话总裁没有查出来     可以采取外连接的方式
      select e.empno   员工编号,
             e.ename  员工姓名,
             e1.empno 上级领导编号 ,
             e1.ename  领导姓名
        from emp e, emp e1
       where e.mgr= e1.empno(+) ;
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值