一定要写函数吗????

nottinghill 2005-01-17 07:07:26
我有一个dept表,一个emp表,一个client表
dept表 有三列 name ,dept_id,leader_id
emp表 有三列 name ,dept_id,emp_id
client表 有三列 name ,client_id,modify_emp_id
select name ,modify_emp_id, dept(modify_emp_id)(根据维护员工求所在部门) from client

dept(modify_emp_id)(根据维护员工求所在部门) 这个函数一定要写吗??dept_id,emp_id 同在一张emp表里,新写一句话的函数不是很傻吗??不知道oracle 有没有 同一张表里的共通函数,

我想知道各位大侠的做法,不作表连接的!!

谢谢


...全文
79 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nottinghill 2005-01-17
  • 打赏
  • 举报
回复
hehe ,我也知道是朝三暮四,但我可以实现就可以了,这样写至少 from 后面是统一的,好操作!!

谢谢各位大侠指点啊

我还知道 这能实现是为什么啊??
ORARichard 2005-01-17
  • 打赏
  • 举报
回复
select name ,modify_emp_id,
(select name from emp where emp_id = modify_emp_id) emp_name from client
这不还是表连接吗,只是换个写法
nottinghill 2005-01-17
  • 打赏
  • 举报
回复
hehe,好强啊,说说运行机制啊 ,我给你分
coolvc2002 2005-01-17
  • 打赏
  • 举报
回复
to : nottinghill

这个应该满足你的要求了吧,速度应该是最快的了哦 :)

select name ,modify_emp_id,
(select name from emp where emp_id = modify_emp_id) emp_name from client
nottinghill 2005-01-17
  • 打赏
  • 举报
回复
上面两位的写法小弟写多了,没有什么意思啊,想求教一个高级方法啊,呵呵,期待石破天惊的高手!!!!还有做表连接会不会很慢啊,我说两个表都很大的时候,比如1000万客户,1000个客户经理呢??
snowy_howe 2005-01-17
  • 打赏
  • 举报
回复
"同一张表里的由一个字段得到另一个字段我想会不会有一个公共函数啊"
——ORACLE没有这种函数。

我想DEPT()不应该是你写的这样子的。
create or replace function dept(empid in varchar2) return varchar2
is
deptid varchar2(200);
begin
select dept_id into deptid from emp where emp_id=empid;
return deptid;
end;

上面做表连接也不错,为什么不想做表连接呢?
ORARichard 2005-01-17
  • 打赏
  • 举报
回复
select c.name,c.modify_emp_id,d.name from client c,emp e,dept d
where c.modify_emp_id=e.emp_id and e.dept_id=d.dept_id;

不作表连接的根本取不到部门的信息。即使使用函数也是在函数内部使用表连接的
nottinghill 2005-01-17
  • 打赏
  • 举报
回复
写一个select dept_id from emp where emp_id='a001' 的函数不是很呆么??
我想如果有一个公共函数
同一张表里的由一个字段得到另一个字段我想会不会有一个公共函数啊

要不这样写函数岂不写到死???:(
snowy_howe 2005-01-17
  • 打赏
  • 举报
回复
我猜想写这个函数的目的在于逻辑清晰。
共通函数,不知道你是什么意思?
还有,为什么不允许表连接,请说明!

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧