作者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
推 spen37:不要用遞迴,有層數限制,用迴圈就好了,寫成function或sp更好 01/31 20:06
→ drinks:沒有層數限制,不過'通常'就只有兩三層吧. 01/31 21:13
推 scoutJJ:如果只是單純找最頂頭上司下 mng_id is null 這條件 01/31 23:12
推 TonyQ:一樓的意思我猜是recursive call 的時候有呼叫的層數限制 02/01 06:56
推 Antzzz:用recursive function吧。要是執行得太慢,加做一個欄位存 02/01 12:34