送幸福分80,求解一樹形顯示的遞歸問題,謝謝UP,但分數有限,抱歉地說:'隻有解答者才有分!'

canning92 2005-03-22 03:33:28
問題如下:
現有一表,具體如下:

CASEID ChileCASEID casename
36 1 開始
37 1 37開始
361 1 開始
362 1 開始
3611 1 開始
3621 1 開始
371 1 371開始
..
... 它存在內在聯系為,即CASEID=361,362是CASEID=36的子類 而CASEID=3611
.... 又是CASEID=361的子類,而CASEID=3621又是CASEID=362的子類。

現要做成一個樹形目錄:具體顯示如下
--36-
|--361-
|--3611-
|--362-
|--3621-
........ 這裡沒有級數控制,隻能根據數據庫的記錄判斷
--37-
|--371-
|--3711- 記錄已經存在,怎麼樣才能實現這種功能,遞歸取得對應的值!
|--372-
|--3721-

可以修改內容:如果有更好的數據表結構也可以,請說明清楚一點!有解題思路更好!謝謝大蝦們噠!
...全文
114 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
FlyHui 2005-03-24
  • 打赏
  • 举报
回复
up
underone 2005-03-24
  • 打赏
  • 举报
回复
应该加一个从属关系的字段就好解决了
underone 2005-03-24
  • 打赏
  • 举报
回复
up
sjjf 2005-03-24
  • 打赏
  • 举报
回复
不客气,仅仅学习是不够的,学以致用,把它用上吧,这种做法是可行的。
自己的代码自己动手,这样会对自己的提升有帮助的。
canning92 2005-03-24
  • 打赏
  • 举报
回复
TO:
mfkiqpl(CPU)
FlyHui(除了爱你还能爱谁)
Tal(Tal)
scoutlin(梅川库子)男优也有理想 8===O({})

謝謝指點與UP!3Q
canning92 2005-03-24
  • 打赏
  • 举报
回复
to underone(underone)

你的想法是對的,但這種一般都隻能處理100層左右哦!哈哈。。。。謝謝你!
canning92 2005-03-24
  • 打赏
  • 举报
回复
to sjjf(水晶剑锋)
說得好!
我現在數據表的格式上作了文章,大概能支持100層,而且方法很簡單!
你的那種方法想用用,但最近工作挺忙的,下次做了有什麼問題再向你請教!
3Q!
sjjf 2005-03-23
  • 打赏
  • 举报
回复
优点:一次查询就可以构造出树来
缺点:要求熟悉树的遍历的算法,尤其是层次遍历。
sjjf 2005-03-23
  • 打赏
  • 举报
回复
此外一种比较经济的做法是:

将你的树转化成二叉树。
对每一个节点进行编号。按照完全二叉树的位置

设计这样的表结构
树id(tree_id) , xxx 信息, 树的位置 (nodePos)

select * from tableName where tree_id=xx order by nodePos
从结果集中一行一行的取。然后构造二叉树。
将这个二叉树转化成为多叉树

这是查询构造的过程,
实际上 你可以把多叉树和二叉树的转化合并到一起去做。

更新的过程如下:
查找出该树,
转化为多叉树后,对节点进行增删,之后更新波及的节点。

这种方式的维护成本比较高。
如果你的更新操作比较频繁的话,就不要采用这种方式了,
如果基本上的操作都只是查询的话,那么这种方式还是不错的。
至少效率上是比较快
sjjf 2005-03-23
  • 打赏
  • 举报
回复
唉,哥们,还是回去叫那个设计这个表的人解决问题吧,在这样的表结构下讨论这个问题没有意义,因为实现
一般都是自关联,而且还要靠代码来进行自关联次数的控制。问题是不知道子关联的次数。

此外有一种比较经济的做法,一会儿给你贴上



canning92 2005-03-23
  • 打赏
  • 举报
回复
TO Tal(Tal)
3Q,不過我已經有另外一個表,裡面是它的最原始的父類,您還有別的想法嗎?3Q!

TO scoutlin
3Q,謝謝提醒!不過一般情況下是不會的!
Tal 2005-03-23
  • 打赏
  • 举报
回复
你加一个parent字段好些
canning92 2005-03-23
  • 打赏
  • 举报
回复
to SJJF(水晶劍鋒)

謝謝你的分析!數據結構很不錯哦!學習!
scoutlin 2005-03-22
  • 打赏
  • 举报
回复
这种结构一旦子类个数过10个,就挂了
mfkiqpl 2005-03-22
  • 打赏
  • 举报
回复
沙发!!UP

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧