Topic表 TID int Unchecked
TUID int Unchecked
TTopic varchar(255) Unchecked
TContents ntext Unchecked
TTime datetime Checked
TClickCount int Checked
TLastClickT datetime UncheckedReply 表RID int Unchecked
RTID int Unchecked
RUID int Unchecked
RTopic varchar(255) Unchecked
RContents ntext Unchecked
RTime datetime Checked
RClickCount int Checked
user表UID int Unchecked
UName varchar(32) Unchecked
UPassword varchar(32) Unchecked
问题:在BSS系统中,打开一篇主贴帖,查看内容时候,需要根据一篇帖子的固定ID值,查询主贴标题,作者姓名,内容;所以跟帖的标题,跟帖人姓名,跟帖内容,跟帖时间。
这道题怎么查?用三表联查?可是UNAME 如何让他区分哪个是跟帖人的哪个是回帖人的?

解决方案 »

  1.   

    我觉得你要查主贴标题,作者姓名,内容,直接从topic表里查就可以了,topic表里TID,TUID,TContents菊ishi姓名内容,TID是主键。然后RID关联到TID里,这样可以定位回复人回的是哪个贴,然后RUID就是回复人的ID,RContents就是他回复的内容,要知道发帖人的ID还是从topic里查。Select TUID,TUID,TTopic,TContents,RTID,RUID,RContents,UName
    from Topic t ,Reply r,user u
    where t.TUID = r.RTID and t.TUID = u.UID and r.RUID = u.UID;试试,不知道对不对,我也是菜鸟。
      

  2.   


    我想了下 不太对- -
    where 条件 判断的是发帖人和回帖人一样的时候的情况 也就是只显示自己发帖,自己回帖的人
      

  3.   

    可是UNAME 如何让他区分哪个是跟帖人的哪个是回帖人的?
    这句话什么意思?
      

  4.   

    select * from
    (select * from Topic join  [user] on [user].UID=Topic.TUID) m,--这里得到的username是发帖人
    (select * from  Reply join [user] on [user].UID=Reply.RUID) n --这里得到的username是回帖人
    where m.TID=n.RTID
      

  5.   


    抱歉抱歉,脑子里想的是把UID关联到user表里取出人名,改成where t.tuid = u.uid and r.ruid = u.uid
      

  6.   

    就是说 UNAME 只是储存用户昵称的,但我如何让查询里显示出不同的UNAME也就是 发帖人和回帖人的不同的昵称
      

  7.   

    忘了加 and r.rid = t.tid了。囧
      

  8.   

    抱歉抱歉,脑子里想的是把UID关联到user表里取出人名,改成where t.tuid = u.uid and r.ruid = u.uid
    where t.tuid = u.uid and r.ruid = u.uid 的意思不是满足RUID 回帖人ID要等于UID 而UID又要等于 TUID 等价与TUID=UID=RUID 不是说必须回帖人和发帖人的UID需要一样么- -
      

  9.   

    select * from 
    (select * from Topic join  [user] on [user].UID=Topic.TUID) m,--这里得到的username是发帖人 
    (select * from  Reply join [user] on [user].UID=Reply.RUID) n --这里得到的username是回帖人 
    where m.TID=n.RTID请问必须是2次查询么?能不能用联合查询呢?
      

  10.   

    这本来就是联合查询,--这里得到的username是发帖人,--这里得到的username是回帖人这里是注释