有三张表:
用户表user(id,name, 。)
发帖表release(id, userid, title, content,date,type,score, 。)//type表示帖子是否解决,int类型
回帖表replay(id, userid, releaseid,content,date, 。)
表的字段太多,就不写上了。同csdn论坛上的查询效果,要怎么写sql. 主要就是一个多表查询的问题,根据release的type查出按回帖时间(没有回帖就看发帖时间)先后排序后的前20条记录。
实例
用户表user(id,name, 。)
发帖表release(id, userid, title, content,date,type,score, 。)//type表示帖子是否解决,int类型
回帖表replay(id, userid, releaseid,content,date, 。)
表的字段太多,就不写上了。同csdn论坛上的查询效果,要怎么写sql. 主要就是一个多表查询的问题,根据release的type查出按回帖时间(没有回帖就看发帖时间)先后排序后的前20条记录。
实例
解决方案 »
- 下面是bll层,我感觉bll层存在有必要么 public int GetMaxId() { return dal.GetMaxId(); } 啥
- checkbox选中问题?
- 关于水晶报表的问题!急,在线等!解决马上结贴
- 请教客户端中的name,id怎么拼的?有时是<input name="dgList:_ctl2:ucExchangeRate:unitprise"....有时是<input name="dgList$ctl02$ucExc
- 有没有办法让页面清空传来的页面参数querystring的值
- 如何动态添加table(webcontrol)的行?
- vb.net中怎么知道一个程序是否引用了资源文件动态库?
- #############SQL数据处理,可能用到搜索技巧,头痛,特高分求救: (今次出手300分)##########
- Ueditor 本地上传图片附件好用,部署到iis不好用了
- 倾情奉献:本人写的客户端控件验证,挑战Microsoft的验证控件
- ASP.
- sql2005和SQL2008安装出错,求解决
select a.id, a.userid, a.releaseid,a.content,a.date,a.type ...
from (select id, userid, releaseid,content,date,type... from release
union
select id, userid, releaseid,content,date,type... from replay) a
where a.type = 'xxx'
order by a.date
??
left join user c on c.id=b.userid
order by b.date (desc、asc),a.date
where a.type=1
C.date Else C.date end as replayDate from release B left join replay C on B.id=C.releaseid left join A on A.id=C.userid
你看看这句是不是只查出来了
帖子id,帖子题目,帖子发表人,帖子发表时间,帖子分数,最后回复人(如果没有回复人,就认为是帖子发布人),最后回复时间(如果没有回复人,就认为是帖子发布人发帖时间)。应该有很多条。。前面有很多字段是相同的。
因为你的release B left join replay C on B.id=C.releaseid left join A on A.id=C.userid user表和replay表通过release表连结,我不知道要怎样获得发帖人名字。
select
r.id 帖子id
,r.title 帖子题目
,u1.name 帖子发表人
,r.date 帖子发表时间
,r.score 帖子分数
,r.replycount 帖子回复数
,isnull(u2.name,u1.name) 最后回复人
,isnull(rp .date,r.date) 最后回复时间
(select top 20
id,
userid,
title,
content,
date,
type,
score,
(select max(id) from replay where releaseid=rel.id) replyid,
(select count(1) from replay where releaseid=rel.id) replycount
from release rel where type='xxx' order by date desc) as r
left join replay rp on rp.replyid=replay.id
left join user u1 on u1.id= r.userid
left join user u2 on u2.id=rp.userid
select top 20 * from(select a.id,a.type as 状态,a.title,a.score as 分数,
c.name+','+a.date as 发帖人 ,isnull(b.replycount,0) as 回复次数,isnull(b.lastreplydate,a.date)+','+isnull(b.date,a.date) as 最后回复 from release a join replay b on a.id=b.releaseid join user c on a.userid=c.userid and b.userid=c.id)as t
Select top 1 E.name from release D LEFT JOIN user E ON D.userid=E.id这句就是在查发贴人的名字