在论坛中回复一次.贴就顶上最顶边...这是不是SQL的问题?...我想是的...谁能给我个SQL语句让我解决问题...谢谢..

解决方案 »

  1.   

    select 帖子表.*,回复表.回复内容,回复表.回复时间 from 帖子表 left join out 回复表 on 帖子表.id=回复表.id  order by 帖子表.回复时间 desc
      

  2.   

    select 帖子表.*,回复表.回复内容,回复表.回复时间 from 帖子表 left outer join 回复表 on 帖子表.id=回复表.id  order by 帖子表.回复时间 desc
      

  3.   

    我写了一个 大概思路是 复制一张一样的表 先把东西放到那张复制的表里 然后把以前的表删掉
    然后在临时表里取得顶的那个帖子 然后把这一行删掉 并在原来那个帖子表里把这删除的一行给插入进去 然后再把临时表里剩下的数据一行一行的插入进去  感觉很浪费资源 我已经尽力了 嘿嘿  关键不知道怎么在一个表的第一行插入数据 查了半天资料我也没找到 郁闷~~~~
    要是知道这个的话就可以做的很简单了(这句话是废话)
    create table tb
    (
    a int ,
    b varchar(20)
    )--select * into tbtemp from tb--drop table tbtemp--select * from tbtempinsert into tb values(1,'1')
    insert into tb values(2,'2')
    insert into tb values(3,'3')
    insert into tb values(4,'4')--drop table tb--select * from tb
               
                create proc BBS
    @id int
    as
    select * into tbtemp from tb
    delete tb
    declare @a int
    declare @b varchar(20)
    declare Mycur cursor scroll for
    select * from tbtemp
    open  Mycur
    fetch first from Mycur into @a,@b
    while @a <> @id
    begin
    fetch next from Mycur into @a,@b
    end
    delete tbtemp where a = @a
    insert into tb values(@a,@b)
    declare MyNewcur cursor scroll for
    select * from tbtemp
    open  MyNewcur
    fetch first from MyNewcur into @a,@b
    while @@fetch_status = 0
    begin
    insert into tb values(@a,@b)
    fetch next from MyNewcur into @a,@b
    end
    close MyNewcur
    deallocate MyNewcur
    close Mycur
    deallocate Mycur
    drop table tbtempexec BBS 1                                 
      

  4.   

    wangzhaoli1982(做事最怕认真二字)  你的太麻烦了.select 帖子表.*,回复表.回复内容,回复表.回复时间 from 帖子表 left outer join 回复表 on 帖子表.id=回复表.id  order by 帖子表.回复时间 desc
    可以研究下. 因为我试过了..不过还是不行.select top 1 帖子表.*,回复表.回复内容,回复表.回复时间 from 帖子表 left outer join 回复表 on 帖子表.id=回复表.id  order by 帖子表.回复时间 desc却可以找到时间最新的贴子...我也不知道为什么...还得再请教一下..
      

  5.   

    select distinct 帖子表.*, 回复表.回复内容,回复表.回复时间 from 帖子表,回复表
    on 帖子表.id=回复表.id  order by 帖子表.回复时间 desc
    这样行吗
      

  6.   

    有一个回复时间数据表,你在select的时候这样写
    select orderdate=isnull(回复数据表,发贴数据表) from table order by orderdate desc这样就行了。当你的回复数据列是空的时候,orderdate就是=发表贴子的数据,我就是用这个方法的
      

  7.   

    select distinct 帖子表.*, 回复表.回复内容,回复表.回复时间 from 帖子表,回复表
    on 帖子表.id=回复表.id  这种不行....况且我也没有重复的值需要清除...就这条语句看能不能搞定,如果top 1 可以获取最新时间的表..top 5 乱了...我表里的时间没有重复性的...select top 5  贴子表.*,回复表.回复内容,回复表.回复时间 from 帖子表 left outer join  回复表 on 贴子表.postid = 回复表.huifu_id WHERE (ancestor_id =1) order by 回复表.回复时间 desc
      

  8.   

    cabee() ( ) 信誉:62    Blog  你用这种方法啊.. ? 我试一下.你那orderdate指什么?
      

  9.   

    orderdate相当于声明一个变量,orderdate=isnull(回复数据表,发贴数据表)
    当你的回复数据表为空,返回的就是发贴时候的时间啊
    不过这个方法就是要把主题一个表,放贴子一个表。因为当你新发贴子的话,主题表时候回复的时间肯定为空,这样的话回复时间就是新发贴的时间,要是不为空,就可以按显示最新的排列
      

  10.   

    http://www.16sw.com/Bbs我的论坛就是这样做的
      

  11.   

    select  帖子表.*,回复表.回复内容,回复表.回复时间 from 帖子表 Right outer join 回复表 on 帖子表.id=回复表.id  order by 帖子表.回复时间 desc试试(注意下回复表的id是不是和帖子表的id是不是成对应关系),不行的话自己连个视图试试吧
      

  12.   

    回复表的id和帖子表的id是成对应关系..用视图搞过了.但你的这条语句不行..完全没效果..继续研究
      

  13.   

    问题已解决..是本人知识不够.浪费大家时间了..wangzhaoli1982(做事最怕认真二字) 是正确的..