Помогите мне создать запрос на основе объединения в SQL Server 2008

#sql-server #join

#sql-сервер #Присоединиться

Вопрос:

Реализованное мной соединение является базовым, но я не могу выяснить проблему в своем запросе. Можете ли вы помочь мне выяснить, где я допустил ошибку?

Вот сценарий:

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

введите описание изображения здесь

и я пишу этот запрос на T-SQL

 Select 
   f._id, f.createdby, f.fullname, 
   f.topictitle, f.topicdate, f.status,
   f.totalviews, count(fr._id) as totalResponses 
from     
forumresponse as fr
RIGHT OUTER Join forum as f ON f._id = fr.forumId
where f.categoryId= @categoryId  
group by f._id, f.createdby, f.fullname, f.topictitle, 
         f.topicdate, f.status, f.totalviews
order by _id desc 
  

Но каждый раз я получаю один и тот же список форумов для любой категории.

Я пытаюсь получить форум и его сведения, которые относятся только к определенной категории. Но какую бы категорию я ни передавал, я получаю тот же список форумов.

Комментарии:

1. @Oded я отредактировал свой вопрос

Ответ №1:

Не используйте RIGHT OUTER JOIN — используйте обычный INNER JOIN .

Использование внешнего соединения гарантирует, что будут возвращены все записи из правой таблицы (форум), независимо от того, есть совпадающая запись из левой таблицы или нет.

Комментарии:

1. @Adam — Может потребоваться некоторое время, чтобы понять различные типы соединений и то, как они работают.