SQL-запрос для отображения записей из нескольких таблиц

#sql #sql-server-2005

#sql #sql-server-2005

Вопрос:

У меня есть следующие две таблицы

  1. Имя таблицы: поток

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

  2. Имя таблицы: ответ

    pk-> reply_id | thread_id | reply

thread_id является fk

Я хочу не считать ответов в каждом потоке, я хочу выводить как

 thread_id | thread_title | description | posted_time | Subject | No_of_replies
  

Ответ №1:

Вот запрос, который я быстро придумал на ходу:

 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
  

Это должно сделать то, что вы хотите.

Ответ №2:

 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