一条sql语句不会写,麻烦达人看看。

asde2004 2006-07-05 06:21:51
我要做一个留言板,需要每条留言可以多人回复。我搜了一下资料,这样的留言板好像都是用两个表建成的,但是我想只用一个表。表格式如下:
id 留言id 自动编号
pid 父id
author 作者
content 内容

一般是用嵌套循环分两次读取每条留言和回复留言,但是有没有更好的办法可以只用一条sql语句就能同时读取到主留言和回复留言呢?因为还要牵扯到分页,所以难倒我了。= =|||
...全文
301 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
netWild 2006-07-05
  • 打赏
  • 举报
回复
当然没问题,赞成 slawdan(--)冯诺依曼在这一刻灵魂附体!(--)
GreenInfo 2006-07-05
  • 打赏
  • 举报
回复
楼上的,这个表从哪可以得出数据冗余了
边城的刀声 2006-07-05
  • 打赏
  • 举报
回复
有没有搞错,一对多的关系用一个表实现,数据冗余,不建议使用这种建库思想
「已注销」 2006-07-05
  • 打赏
  • 举报
回复
select * from 留言表 where ID=nnn or pid=nnn order by id

因为id是自动编号,所以回复的帖子其id必然小于主帖

用order by id就可以了排序显示了

分页的就不用说了吧?呵呵

显示的时候略作处理,比如:
pid=0 的是主帖 pid>0 的是回复
记录总数-1就是回帖数
等等
mrwang2000 2006-07-05
  • 打赏
  • 举报
回复
个人意见,仅供参考,

首先,顶级留言的pid应该设置一个特殊值,比如0,所有pid为0的项目均为顶级留言。
select * from YourTable as Parent,YourTable as Son where Parent.pid=0 and Son.pid = Parent.id and Parent.id=<这里是你需要的id>
Larrystudy 2006-07-05
  • 打赏
  • 举报
回复
用两个表
留言表 A:pid 编号,author 作者;content 内容
回复表 B:id 编号,pid 父id,content 回复内容

select A.*,B.* from A left join B on A.pid=B.pid order by 。。。。。
边城的刀声 2006-07-05
  • 打赏
  • 举报
回复
强烈不赞同这样的建库方式,强烈不赞同数据冗余
asde2004 2006-07-05
  • 打赏
  • 举报
回复
slawdan的方法不错,但是只能用来获取某单一留言及其子留言的字段。如果是一次显示多条留言及子留言,就没办法用这个语句分页了= =|||

28,402

社区成员

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

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