[SQL ] 樹狀結構的SQL怎麼下?

看板Database作者 (LaPass)時間13年前 (2012/05/04 11:01), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
在程式中 很常用到像是「樹」這種東西 例如資料夾(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

05/04 12:43, , 1F
試試 Modified Preorder Tree Traversal
05/04 12:43, 1F

05/04 12:51, , 2F
這個嗎?
05/04 12:51, 2F

05/04 12:52, , 3F
05/04 12:52, 3F

05/04 12:54, , 4F
這個方法在新增、刪除時似乎需要動到很多筆資料,以及多執
05/04 12:54, 4F

05/04 12:55, , 5F
行緒時似乎會出狀況.... 不過那方法讓我想到了,在伺服器起
05/04 12:55, 5F

05/04 12:56, , 6F
動時把ID讀出來建成樹,放在記憶體裡做快取就好了 XD
05/04 12:56, 6F
文章代碼(AID): #1FeqQDoT (Database)