您的位置:首页技术开发ASP技巧 → bbs的树状结构算法

bbs的树状结构算法

时间:2004/11/7 4:11:00来源:本站整理作者:蓝点我要评论(0)

数据库设计中order_value是用来排序的,具体实现是   

**注意以下的讨论是对一个主题而言,就是对一棵树而言!   

如果加一新贴那么  order_value=0   

如果跟贴查比父贴  order_value大的order_value   

如果有假设为next_value,那么新帖的   

order_value为父贴的(order_value+next_value)/2;   

如果有那么新帖的order_value为父贴的order_value+1000   

也就是说如果对A贴跟贴,如果A为末贴,A的字帖的order_value为order_value(父)+1000,   

不是末贴既找出比A大的order_value,新的order_value为两者的一半!   

排序实现: order by groupid,order_value desc   

**技巧如果想实现层次多一点可以每次加的多一点+100000,那样应该会好一点   



***不足之处:   

1:使用两个字段排序,速度有点慢   

2:使用order_value是一个浮点数,使用float估计不够,还是使用double   

3:只能实现理论上的无穷层实际上超过10层使用float有问题,使用double可能没有   

4:插入是需要查找下一个order_value



Dim ordervalue, nextvalue As Double

sql = "select gorders where gId=" & gId & " and goders> " & gorders & " order by goders  "

rs1.Open sql, conn1, adOpenForwardOnly, adLockOptimistic '查询比父贴大的

                                                          order_value

If (rs1.EOF And rs1.BOF) Then

  gorders = gorders + 256

  gLayer = gLayer + 1

Else

  nextvalue = rs1("gorders")

  If (nextvalue - gorders) > 1 Then

   gorders = Int((gorders + nextvalue) / 2)

   gLayer = gLayer

  Else

     'gorders,glayer跟回帖一样

End If

End If



End Sub




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案