SQL查询以显示来自多个表的记录

时间:2011-04-16 12:10:58

标签: sql sql-server-2005

我有以下两个表

  1. 表名:主题

    pk-> thread_id | thread_title | description | posted_time | Subject

  2. 表名:回复

    pk-> reply_id | thread_id | reply

  3. thread_id是fk

    我想在每个帖子上都没有回复,我希望输出像

    thread_id | thread_title | description | posted_time | Subject | No_of_replies
    

2 个答案:

答案 0 :(得分:3)

以下是我很快就想到的问题:

SELECT
    T.Thread_ID
    ,T.Thread_Title
    ,T.Description
    ,T.Posted_Time
    ,T.Subject
    ,COUNT(R.Reply_ID) AS No_of_replies
FROM
    Thread T
    INNER JOIN Reply R ON T.Thread_ID = R.Thread_ID
GROUP BY
    T.Thread_ID
    ,T.Thread_Title
    ,T.Description
    ,T.Posted_Time
    ,T.Subject

这应该做你想要的。

答案 1 :(得分:0)

select t1.*,ifnull(t2.no_of_replies) from thread t1 left join 
(select thread_id,count(1) no_of_replies from reply)t2
on t1.thread_id=t2.thread_id