日期:2014-05-18  浏览次数:20402 次

这样的查询该如何实现?
一张板块表A,一张帖子表B,一张回复表C
A表有ID,还有其他的列先忽略,
B表有ID还有发帖时间列IssueTime和PID,其他的列先忽略,
C表有ID还有还有回复时间列IssueTime和PID,其他的列先忽略。
关联如下
C.PID= B.ID, B.TID = A.ID
查询目标是根据A表的ID查询出和B表关联的前20条数据,且需要根据C表关联的IssueTime来倒序排序
如果B表内有些数据在C表没有关联的数据则根据B表的IssueTime来倒序排序

用语言表达就是根据板块ID查询出前20条帖子并且根据回复时间倒序排序,如果无回复则根据发帖时间倒序排序

------解决方案--------------------
SQL code

SELECT A.* FROM(
select top 20 * from posts 
where BelongTopicID=17 order by issuetime desc
)A left JOIN Replys on a.ID= Replys.BelongPostID
ORDER BY Replys.IssueTime desc