mysq如何查找出所有的评论和回复

所有的评论和回复都放在一张tb_question_answer(id,obid,type,content,user)表里。评论和回复用一字段type来区分。请问mysql如何查找所有的评论和回复?像QQ空间那样,对应一个日志ID,是如何查找出对应的评论和回复的?用一次select的话只能查找到一次回复的内容,如果有多重回复的话,如何写sql呢?
例如是这样的结果:
a:评论
aa:回复a的评论
aaa:回复aa的回复
c:回复a的评论

评论a id=1 一条回复a的回复aa id=2,obid=1 又有一个人看到aa对a的回复,然后对aa进行了回复aaa id=3,obid=1

如果有多个回复都对应到同一个id,肯定会查出来啊,你的表设计的估计很有问题

另外同一张表也可以自己联合自己查找,就像多表联合一样

表结构设计上不能完全递归,需要记录额外属性。要对回复的回复都认为是引用回复。类似下面这种结构。需要有一个id记录是属于某篇文章,不管多少层次的回复都有是哪篇文章的id
然后对回复的回复,则通过引用id来进行记录。

 create table blog_comments(
       comm_id number,--每一条评论的编号
       --这里不设立主键,因为每一篇文章有很多评论,
       --而这些评论是依赖与这篇文章的,如果这篇文章被删除了,
       --那么这些评论也一并被删除,这个可以使用cascade级联删除
       --这个你可以使用sequence来实现自增

       ref_comm_id number,--引用评论的编号,参照本表的comm_id,
       --默认为空,比如第一条评论就没有引用的评论
       --如果是回复上面的评论,也用这个键值,不过是按钮名称不一样而已

       blog_id number,--被评论的文章编号[可能是其他数据类型]
       --这里的blog_id要参照文章id号,因为每条评论都是关联到一篇文章的

       comm_time date default sysdate,--评论时间

       comments varchar2(500 char)--一般评论都限制了字数
       --当然可以有网页的html[asp[,jsp]]控件来控制
       --总之,如果大于500,那么存进数据库时将截断
       )

MySQL需要自定义函数来实现,http://blog.csdn.net/yangnianbing110/article/details/36664799

MySQL需要自定义函数来实现,http://blog.csdn.net/yangnianbing110/article/details/36664799

设计上加入一个path字段即可
参考:http://www.bitscn.com/pdb/php/201407/235988.html

其实并不需要区分 ,都可以看出是评论,只要在表里建2个字段id和 parentId 就可以表示出层级关系

举个例子:评论a 则表示 id :1 parentid: 0, a评论下面有一个回复,则 id:2 parentid:1,a下面又有一个回复,则 id:3 parentid:1

后面2个回复的parentid都对应第一个评论a的id,这样就可以无限的层级了

你要查询出来一个评论的话就是 where id=1 or parentId=1;

应该能明白了吧,这其实是一个树级结构,如果你想知道怎么展示的话,可以baidu下哦