一个极富挑战性的问题--关于树形论坛

crystalinpara 2003-08-23 09:31:07


我在做一个树形论坛时,设计存放文章的数据库结构如下:

字段名 数据形式 说明
ID 自动编号 贴子编号
subject 文本 主题
Send_Date 日期/时间 发贴时间
Referance 数字 参考.即存放此贴回复的贴子的article_ID
Content 备注 内容
Sender 文本 作者
BrowsedCount 数字 已浏览次数
RepliedCount 数字 已被回复次数

该数据库有若干个表,每个表的数据结构是一样的,现在,为了在某一贴子有最新回复的时候保证其排在最上方,需要设计一个查询.将referance值为0(即此贴没有回复任何贴,称之为一个主题)
举例如下:
假设ID为1的贴子被ID为2,3,4的贴子所回复,而ID为2的贴子又为ID为8的贴子所回复,各贴发贴时间及Referance值如下:
ID 发贴时间 Referance
1 2003/4/1 0
2 2003/4/5 1
3 2003/4/6 1
4 2003/4/7 1
8 2003/4/8 2
当然数据库中还存在很多主题,如何用一个查询语句将所有主题选出,并按-----与它有回复关系(不管是一级回复,如贴2,3,4对于贴1,还是二级,三级回复,如贴8对于贴1)的所有贴中发送时间最晚的-------排序.比如,对于主题1(贴1)来说,这个最晚的回复时间就是2003/4/8,即贴8的发送时间.这也就是论坛中实现"顶"的功能,即一个贴子已经排后了,但通过一个回复可以使它重新排前.

不知道我的表达是不是很清楚,欢迎讨论!
...全文
37 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystalinpara 2003-08-23
  • 打赏
  • 举报
回复
能不能用一个组合查询语句来实现呢?
如果用循环的话太慢了
chinayang9 2003-08-23
  • 打赏
  • 举报
回复
新建一个topic字段,在主题留言中指定为“真”,这样通过回复的主题名找到ID1的位置,再更改它的时间。
changechange 2003-08-23
  • 打赏
  • 举报
回复
很简单,加一个layer 字段就可以了,写循环的时候把一个子类全部写完以后再跳转到令一个子类,先根据layer排序后再进行处理
crystalinpara 2003-08-23
  • 打赏
  • 举报
回复
ID 发贴时间 Referance
1 2003/4/1 0
2 2003/4/5 1
3 2003/4/6 1
4 2003/4/7 1
8 2003/4/8 2

如果贴8回复贴2的时候怎么办呢?只能把贴2的updatetime更新而无法更新贴1的, 加updatetime我想过,可是存在多级回复的时候就没用了呀
zurong 2003-08-23
  • 打赏
  • 举报
回复
在表里面,加一个字段,updatetime,将此处添入,回复的时间,帖子按updatetime的降序排列
chjpeng 2003-08-23
  • 打赏
  • 举报
回复
樹形論壇有很多的啊...

28,390

社区成员

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

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