首页 > 游戏问答
oracle sql查询的一个习题,选择所有员工的姓名、员工号、管理者姓名、管理者的员工号
我一直不喜欢:
select * from a,b
这样的查询方式,或许它看起来非常简洁 ,但是有的时候它并不是那么好用
我一般用 Left join 和 inner join 这 两种方式来参照。
如下:
-- 上面的是 除boss 以外的所有员工
select e.name,e.dept_id,m.name as "管理者名称",e.manager_id as "管理者员工号"
from emp e
Left join emp m on e.manger_id= m.id
where e.manger_id is not null
Union ALL
-- 下面的是 boss
select name,dept_id,''as "管理者名称",'' as "管理者员工号"
from emp
where manger_id is null
select e.name,e.dept_id,m.name as "管理者名称",e.manager_id as "管理者员工号"
from emp e,emp m
where e.manager_id=m.id(+);
用外连接,你可以查查资料
如果是查询所有条目的信息就不需要条件啊,直接
select name,.... from emp。
或许是我没有理解你的问题,但你描述的就是这样的,“
选择所有员工的姓名、员工号、管理者姓名、管理者的员工号
”
用左联接:
select e.name,e.dept_id,m.name as "管理者名称",e.manager_id as "管理者员工号"from emp e left outer join
emp m
on e.manager_id=m.id;
select e.name,e.dept_id,m.name as "管理者名称",m.id as "管员工号"
from emp e left join emp m on m.id=e.manager_id;
oracle 数据库表的设计,分区和索引的设计
我就说一下啊..你看你设计的是对个人还是对一个客户代码..
很简单来说...银行卡..你肯定有几张以上的银行卡..如果你的设计是类似银行卡的用户..把单独的用户抽象出来...
还有最好用户信息和其他地址信息.还有你所包括的其他的分别抽象出来...就这样子吧..我个人看能把这表搞成3个1对1关系的表..那时不用怎么建立索引的..你还少了日值字段..你如何记录用户的创建日期和修改日期..用户记录修改后你都不知道什么时候修改的或者说谁修改的...BUG啊....
看过oracle over 租号-oracle 数据库表的设计,分区和索引的设计还喜欢
- 2020-02-11 小小英雄租号网
- 2020-01-08 如何租赁游戏极品账号
- 2020-01-08 租号玩家们购买活动试玩订单
- 2020-01-10 清远恒大1号1别墅日租
- 2020-01-08 租号玩怎么进行注册账号,登陆怎么操作
- 2020-01-08 大吉大利今晚租号免押金的那种
- 2020-01-08 热门游戏:荒野行动小时租号
- 2020-01-08 租号营平台官方公告
- 2020-01-08 租号营平台客服
- 2020-01-08 租号营认证中心