oracle中的几个例子表emp、dept和salgrade

如何编写SQL语句求出员工的姓名,员工的上级,员工的工资等级和员工上级的工资等级... 如何编写SQL语句求出员工的姓名,员工的上级,员工的工资等级和员工上级的工资等级 展开
 我来答
lincunjing4
2012-05-24 · TA获得超过1210个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:190万
展开全部
select
m.ename 员工姓名,n.ename 员工上级,m.grade 员工工资等级,n.grade 上级工资等级
from
(select mgr,ename,grade from emp,salgrade
where sal>=losal and sal<=hisal) m
left join
(select empno,ename,grade from emp,salgrade
where sal>=losal and sal<=hisal) n
on m.mgr=n.empno;
========================================
大概就是这样了。
其中EMP表中有个"comm"字段不知道是什么意思,所以以上sql语句没有考虑这个字段的内容。
You are lucky!
追问
你这个不行,查出来的结果有重复
追答
除非你emp表中本身就有重复的数据,不然是不会出现重复的数据的。
我用Oracle中的示例表测试过,原有14条数据,结果也是14条数据。(要是你的表有重复数据,自己加个‘distinct’不就行了?)
emp表数据:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
1 7369 SMITH CLERK 7902 1980-12-17 800.00 20
2 7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
3 7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
4 7566 JONES MANAGER 7839 1981-4-2 2975.00 20
5 7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
6 7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7 7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
8 7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20
9 7839 KING PRESIDENT 1981-11-17 5000.00 10
10 7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
11 7876 ADAMS CLERK 7788 1987-5-23 1100.00 20
12 7900 JAMES CLERK 7698 1981-12-3 950.00 30
13 7902 FORD ANALYST 7566 1981-12-3 3000.00 20
14 7934 MILLER CLERK 7782 1982-1-23 1300.00 10
-------------------------------------------------------------------------------------------
sql语句执行结果:
员工姓名 员工上级 员工工资等级 上级工资等级
1 SMITH FORD 1 4
2 JAMES BLAKE 1 4
3 ADAMS SCOTT 1 4
4 WARD BLAKE 2 4
5 MARTIN BLAKE 2 4
6 MILLER CLARK 2 4
7 TURNER BLAKE 3 4
8 ALLEN BLAKE 3 4
9 CLARK KING 4 5
10 BLAKE KING 4 5
11 JONES KING 4 5
12 SCOTT JONES 4 4
13 FORD JONES 4 4
14 KING 5
启帆信息
2024-11-19 广告
启帆信息是英伟达中国区代理商,原厂授权代理,提供全面的软件技术解决方案以及NVIDIA以太网产品、交换机等产品,欢迎前来咨询!... 点击进入详情页
本回答由启帆信息提供
sw19861108
2012-05-25 · TA获得超过270个赞
知道小有建树答主
回答量:249
采纳率:100%
帮助的人:186万
展开全部
select a.ename,a.sal,s.grade,b.ename bossname,b.sal bosssal,r.grade bossgrade from emp a,emp b,salgrade s,salgrade r where a.mgr=b.empno(+) and a.sal between s.losal and s.hisal and b.sal between r.losal and r.hisal;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郭哥之子
2012-05-24 · TA获得超过143个赞
知道小有建树答主
回答量:461
采纳率:100%
帮助的人:192万
展开全部
这3张表有关联吗,关联字段是什么,没有的话写不了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式