#sql #sql-server-2005
#sql #sql-server-2005
Вопрос:
У меня есть следующие две таблицы
-
Имя таблицы: поток
pk-> thread_id | thread_title | description | posted_time | Subject
-
Имя таблицы: ответ
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