bbs的树状结构算法

2008-02-23 09:41:28来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

数据库设计中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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:IIS5 ADO 2.5新先睹为快技术

下一篇:asp查询xml的代码,实现了无刷新、模糊查询功能