2016-07-27 2 views
0

Я построил механизм слежения за пользователем.Пользователь выполняет запрос, который выбирает первый верхний пост для каждого последующего пользователя.

У меня есть таблица сообщений:

  • идентификатор (целое)
  • пост (VARCHAR)
  • когда (DateTime)

таблица пользователей

  • id
  • Имя

таблице следующее:

  • идентификатор (целое)
  • user_id (интермедиат)
  • follow_user_id (интермедиат)

Я хочу представить пользователю верхнюю первое сообщение для каждого пользователя на основе даты (по убыванию), и запрос должен содержать список, в котором содержится пара сообщений/пользователей на основе параметра идентификатора пользователя. Идентификатор пользователя - это «user_id» в таблице «follow», поэтому я могу отображать сообщение и данные пользователя в таблице для определенного «user_id» последователя.

Так что если пользователь будет следовать за 50 пользователями, и если у всех этих пользователей будет много сообщений, он вернет 1 последнее сообщение для каждого пользователя, поэтому запрос вернет 50 результатов в паре с данными Post и User.

Я нуждаюсь в оптимизированном запросе для этого в Linq или Entity Framework.

Использование ASP.NET 4.5/C#/Entity Framework 6/Visual Studio 2015

ответ

0
select top(1) post 
from posts P 
join 3rdTABLE T on P.ID= T.ID 
where T.user_id='123456'   
order by when DESC 

В выше вы можете передать @User_ID в качестве параметра или объявить @User_ID BIGINT и изменить

**where T.user_id='123456'** 

К

**where [email protected]_id** 
+0

Неплохо для того, чтобы не упоминать структуру Linq или Entity, мне нужен этот тип запроса. Также он будет возвращать много сообщений для каждого пользователя. –

 Смежные вопросы

  • Нет связанных вопросов^_^