首页 > 游戏问答

oracle over 租号-oracle 数据库表的设计,分区和索引的设计

作者: 租号官方平台 2020-07-13 02:10:05 游戏问答

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 数据库表的设计,分区和索引的设计标签列表