作者LaPass (LaPass)
看板Database
标题[SQL ] 树状结构的SQL怎麽下?
时间Fri May 4 11:01:31 2012
在程式中
很常用到像是「树」这种东西
例如资料夹(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
1F:推 allanshen:试试 Modified Preorder Tree Traversal 05/04 12:43
2F:→ LaPass:这个吗? 05/04 12:51
4F:→ LaPass:这个方法在新增、删除时似乎需要动到很多笔资料,以及多执 05/04 12:54
5F:→ LaPass:行绪时似乎会出状况.... 不过那方法让我想到了,在伺服器起 05/04 12:55
6F:→ LaPass:动时把ID读出来建成树,放在记忆体里做快取就好了 XD 05/04 12:56