作者drinks (不告诉你..)
看板Database
标题[SQL ] table 设计问题.
时间Thu Jan 31 19:48:01 2008
请问各位大大,
小弟现在有一个问题,
就是假设有个table
员工编号 emp_id,
上司编号 mng_id,
这两个栏位是再同一个table,而上司编号 是对应在员工编号,
就像是:
name emp_id mng_id
king 01 null
alex 02 01
john 03 02
jojo 04 01
请问 要怎麽得到 员工的 最顶头上司编号呢?
以这例子 john的 最上司 为 king
我是把查询的资料变成2维阵列, 然後用递回去比对(因为不知道有几层)
请问,这样table 设计是有问题的嘛?
sql 语法 可以下 select a.name,a.mng_id,b.name from emp a,emp b where
a.mng_id = b.emp_id;
这样只有两层的效果.
我是觉得我的写法 对资料量大的时候 一定会有问题,
希望各位大大指导. 感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.139.12
1F:推 spen37:不要用递回,有层数限制,用回圈就好了,写成function或sp更好 01/31 20:06
2F:→ drinks:没有层数限制,不过'通常'就只有两三层吧. 01/31 21:13
3F:推 scoutJJ:如果只是单纯找最顶头上司下 mng_id is null 这条件 01/31 23:12
4F:推 TonyQ:一楼的意思我猜是recursive call 的时候有呼叫的层数限制 02/01 06:56
5F:推 Antzzz:用recursive function吧。要是执行得太慢,加做一个栏位存 02/01 12:34