[SQL ] table 設計問題.

看板Database作者 (不告訴你..)時間16年前 (2008/01/31 19:48), 編輯推噓4(401)
留言5則, 5人參與, 最新討論串1/2 (看更多)
請問各位大大, 小弟現在有一個問題, 就是假設有個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

01/31 20:06, , 1F
不要用遞迴,有層數限制,用迴圈就好了,寫成function或sp更好
01/31 20:06, 1F

01/31 21:13, , 2F
沒有層數限制,不過'通常'就只有兩三層吧.
01/31 21:13, 2F

01/31 23:12, , 3F
如果只是單純找最頂頭上司下 mng_id is null 這條件
01/31 23:12, 3F

02/01 06:56, , 4F
一樓的意思我猜是recursive call 的時候有呼叫的層數限制
02/01 06:56, 4F

02/01 12:34, , 5F
用recursive function吧。要是執行得太慢,加做一個欄位存
02/01 12:34, 5F
文章代碼(AID): #17eRLqz- (Database)
文章代碼(AID): #17eRLqz- (Database)