看板 Database 關於我們 聯絡資訊
請問各位大大, 小弟現在有一個問題, 就是假設有個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