求一个查询语句的写法
表tbl,存放bbs里的帖子
字段:
fld_id,帖子编号
fld_pid,父帖编号,如果是父帖则此字段值=0
fld_body,帖子内容
fld_createtime,发帖时间
一个父帖可以有多个子帖,
确认父帖的方法是,fld_pid=0,
确认父帖和子帖关系的方法是:a记录的fld_pid = b记录的fld_id,则b是a的父帖.
我现在想得到一个结果集,全部都是父帖,并且按照以下要求排序
它的最新子帖的发布时间降序排列
如果没有最新子帖,则父帖的发布时间作为最新子帖的发布时间.
例如:
fld_id,fld_pid,fld_body,fld_createtime
1 0 1 2006-01-02
2 0 2 2006-01-01
3 1 3 2006-01-03
4 1 4 2006-01-08
5 2 5 2006-01-05
6 2 6 2006-01-06
7 0 7 2006-01-07
则得到的结果集是:
fld_id,fld_body
1 1
7 7
2 2
其中,1的最新子帖是4(2006-01-08)
7没有最新子帖,则使用自己发布的时间作为最新子帖发布时间(2006-01-07)
2的最新子帖发布时间是6(2006-01-06)
谢谢高人指点~~~
------解决方案--------------------select
t1.fld_id,
t1.fld_body,
max(decode(t2.fld_createtime, null, t1.fld_createtime, t2.fld_createtime)) createtime
from
tbl1 t1,
tbl1 t2
where
t1.fld_pid = 0
and t1.fld_id =t2.fld_pid (+)
group by
t1.fld_id,
t1.fld_body
order by createtime