выбрать сообщения из таблицы - PullRequest
2 голосов
/ 15 октября 2011

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

messages
--------------
user_id_from (int)
user_id_to (int)
text (varchar)
date (datetime)
isRead (boolean)

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

Допустим, это мои данные

user_id_from   user_id_to  text      date      isRead
100            101         "text1"   2011/1/1  0
101            100         "text2"   2011/1/2  0
100            102         "text3"   2011/1/5  0

Вот мой запрос:

select *
 from Message m 
 where m.user_id_to = 100
   or m.id in 
     (select m2.id 
      from Message m2 
      where m2.user_id_from = 100 
        and m2.user_id_to != m.user_id_from
     )
 group by m.user_id_from, m.user_id_to

Этот запрос дает мне полные сообщения, где пользователь 100там.

Как я могу это сделать?

1 Ответ

1 голос
/ 15 октября 2011

Это потребует от вас отслеживания «тем» в сообщениях, или вы также можете называть их разговорами.Каждый раз, когда вы отправляете сообщение, он получает разговор_ид.Затем вы создаете таблицу user_conversation_subscription.Отправка сообщения кому-либо начинает новый разговор с отправителем и получателем в качестве единственных участников, но они могут приглашать людей в разговор.Затем вы можете получить новые сообщения, сгруппированные по разговору, чтобы увидеть, в каком разговоре вы получили новые сообщения, вот как это работает на Facebook.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...