当前位置: 首页 > 图文教程 > 网络编程 > ASP > bbs的树状结构算法

ASP
ASP基础讲座(下)
解决IIS5 HTTP500内部错误
ASP 3.0高级编程(四十六)
ASP 3.0高级编程(四十五)
ASP 3.0高级编程(四十四)
ASP 3.0高级编程(四十三)
ASP 3.0高级编程(四十二)
ASP 3.0高级编程(四十一)
ASP 3.0高级编程(三十九)
ASP 3.0高级编程(三十八)
ASP 3.0高级编程(三十七)
ASP 3.0高级编程(三十六)
ASP 3.0高级编程(三十五)
ASP 3.0高级编程(三十四)
ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十二)
ASP 3.0高级编程(三十一)
ASP错误代码说明
jscript错误代码及相应解释大全
ASP错误处理

ASP 中的 bbs的树状结构算法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 56 ::
收藏到网摘: n/a

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