数据库的自身关联

自身关联

查询出每个雇员的编号,姓名及其上级领导的编号,姓名:

SELECT e.empno eno, e.ename ename, m.empnomno, m.ename mname 

FROM emp e, emp m

WHERE e.mgr = m.empno(+);

 

查询出在1981年雇拥的全部雇员的编号姓名雇拥日期(按照年-月-日显示),工作领导姓名雇员月工资,雇员年工资(基本工资+奖金)、雇员工资等级部门编号,部门位置、并且要求这些雇员的月基本工资在1500—3500之间,将最后的结果按照年工资降续排列,如果你那工资基本相等的,则按照工作进行排序:

         样例分析:

确定所需要的数据表

                   emp:编号、姓名、雇拥日期、工作、月工资、计算年工资;

                   emp:领导姓名;

                   dept:部门编号,名称,位置;

                   salgrade:工资等级;

确定关联字段:

         雇员和领导:emp.mgr =memp.empno;也就是说雇员的领导编号,要和同一张表的雇员编号相同,就是雇员也是领导,领导也是雇员,同一张表的连接操作;

         雇员和部门:emp.deptno = dept.deptno;

         雇员和工资等级:emp.sal BETWEEN salgrade.losal AND salgrade.hisal;

 

SELECT DISTINCT e.empno,e.ename, e.hiredate,e.sal,(e.sal + NVL(e.comm,0))*12 income, m.ename mname,

  d.deptno dno, d.dname dname, d.loc, s.grade,DECODE(s.grade, 1,'E等级',2,'D等级',3,'C等级',4,'B等级',5,'A等级') 工资等级

FROM emp e,emp m, dept d, salgrade s

WHERE TO_CHAR(e.hiredate,'yyyy') = '1981'AND e.sal BETWEEN 1500 AND 3500 AND

  e.mgr = m.empno(+)

  AND e.deptno = d.deptno

  AND e.sal BETWEEN s.losal AND s.hisal

ORDER BY income desc, e.job;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值