oracle问题:内连接、外连接、左右连接等等,是不是只有两个表时才有的现象?一个表是不可能有的??
展开全部
是两个数据集合才有的现象。
一个表弄两个集合也是可以连的,就看有用还是没用。如:
select * from (select 字段1, 字段2 from 表1)a left join (select 字段1, 字段3 from 表1)b on b.字段1=a.字段1
一个表弄两个集合也是可以连的,就看有用还是没用。如:
select * from (select 字段1, 字段2 from 表1)a left join (select 字段1, 字段3 from 表1)b on b.字段1=a.字段1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、等连接
问题:显示员工姓名及其所在部门的名称
分析: 姓名 - emp - ename
部门名称 - dept - dname
关系 emp(deptno) <-> dept(deptno)
select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;
2、外连接
问题:查询所有部门名称和对应的员工姓名,若该部门没有员工,只显示部门名称。
分析: 部门名称 - dept -dname
员工姓名 - emp - ename
select d.dname,e.ename from emp e,dept d where e.deptno(+) = d.deptno;
注意:Oracle中使用(+)表示外连接,可以理解(+)所在字段的对侧(以=分开左右两部分)为主要显示信息。
3、自连接
问题:显示员工姓名及其上级员工的姓名
分析:员工姓名 - emp -ename
select t1.ename,t2.ename from emp t1,emp t2 where t1.mgr = t2.empno;
4、子查询模式
问题:查询工资高于公司平均工资的所有员工
分析:公司的平均工资
select avg(sal) from emp;
select * from emp where sal>(select avg(sal) from emp); // 关联子查询
问题:显示员工姓名及其所在部门的名称
分析: 姓名 - emp - ename
部门名称 - dept - dname
关系 emp(deptno) <-> dept(deptno)
select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;
2、外连接
问题:查询所有部门名称和对应的员工姓名,若该部门没有员工,只显示部门名称。
分析: 部门名称 - dept -dname
员工姓名 - emp - ename
select d.dname,e.ename from emp e,dept d where e.deptno(+) = d.deptno;
注意:Oracle中使用(+)表示外连接,可以理解(+)所在字段的对侧(以=分开左右两部分)为主要显示信息。
3、自连接
问题:显示员工姓名及其上级员工的姓名
分析:员工姓名 - emp -ename
select t1.ename,t2.ename from emp t1,emp t2 where t1.mgr = t2.empno;
4、子查询模式
问题:查询工资高于公司平均工资的所有员工
分析:公司的平均工资
select avg(sal) from emp;
select * from emp where sal>(select avg(sal) from emp); // 关联子查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一张表叫自连接
自连接是指在同一张表的连接查询
如:显示某个员工的上级领导的姓名?
比如显示员工‘FORD’的上级
SELECT worker.ename, boss.ename FROM emp worker,emp boss WHERE worker.mgr = boss.empno AND worker.ename = 'FORD';
自连接是指在同一张表的连接查询
如:显示某个员工的上级领导的姓名?
比如显示员工‘FORD’的上级
SELECT worker.ename, boss.ename FROM emp worker,emp boss WHERE worker.mgr = boss.empno AND worker.ename = 'FORD';
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询