select t.yjfk_id,t.fid,t.yhid,jlcjr yhxm,t.lxfs,t.jlcjsj,t.bt,t.nr,(select count(0) from epdm_yjfk where fid=t.yjfk_id) hfs 
,(select jlcjsj from EPDM_YJFK where fid=t.yjfk_id and fid!='0' and rownum=1 order by jlcjsj desc) zhhfsjfrom EPDM_YJFK t where t.fid='0' and t.yhid='1003' order by jlcjsj desc如上是个留言版的查询语句,要查出留言信息、留言的回复数、留言的最后回复时间和回复人。
留言和回复在一个表中,yjfk_id是主键,fid是父id,fid=0代表此留言是留言而不是回复。
如上红色部分报错,提示缺少右括号,红色部分为查询留言的最后回复时间(每条留言可多条回复,取最后回复时间)

解决方案 »

  1.   

    你取最后回复时间错了,不是这样取,按下面的就可以了select t.yjfk_id,
           t.fid,
           t.yhid,
           jlcjr yhxm,
           t.lxfs,
           t.jlcjsj,
           t.bt,
           t.nr,
           (select count(0) from epdm_yjfk where fid = t.yjfk_id) hfs,
           (select max(jlcjsj)
              from EPDM_YJFK
             where fid = t.yjfk_id
               and fid != '0') zhhfsjfrom EPDM_YJFK t
     where t.fid = '0'
       and t.yhid = '1003'
     order by jlcjsj desc
      

  2.   

    其实我自己已经通过修改表结构解决了,想知道sql如何实现?没人?