看板 Database 關於我們 聯絡資訊
在程式中 很常用到像是「樹」這種東西 例如資料夾(d:我的資料夾/相片/日本旅遊) 部門單位(頂尖大學/理學院/資訊工程研究所) 地址(地球/台灣/台北/中和路一百號) 我看到的用法 大多是用一個欄位叫做ParentId,紀錄上一層是什麼 像是 #1BOeU8K1 那篇文中那樣 那,我想請問 如果要針對一棵「樹」下指令該怎麼做? 例如把樹中所有的Name欄位改成'樹A' UPDATE Tablea SET Name='樹A' WHERE..... 之類的 之前看過有人額外加Folder欄位去紀錄階層 EX: _0_2_3_42_5_ 中間的數字是從根部到該資料夾的id 如果想找id為42的資料夾下的所有檔案,就用 Folder LIKE '%_42_%' 下去找 也看過有人寫遞迴去撈資料 但是,目前我想弄的東西,可能會製造一棵層次達到幾十、幾百,甚至幾千的樹 而且結點可能會移動 不管用遞迴或是額外加欄位似乎都不太理想 請問有漂亮的方法可以解決這個問題嗎? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.16.65
allanshen:試試 Modified Preorder Tree Traversal 05/04 12:43
LaPass:這個嗎? 05/04 12:51
LaPass:http://ppt.cc/ysfJ 05/04 12:52
LaPass:這個方法在新增、刪除時似乎需要動到很多筆資料,以及多執 05/04 12:54
LaPass:行緒時似乎會出狀況.... 不過那方法讓我想到了,在伺服器起 05/04 12:55
LaPass:動時把ID讀出來建成樹,放在記憶體裡做快取就好了 XD 05/04 12:56