групповые сообщения чата в соответствии с именем пользователя - PullRequest
0 голосов
/ 08 сентября 2018

Я создаю систему чата для своего веб-сайта, но я застрял в небольшой проблеме. Я хочу сгруппировать сообщения по имени пользователя других пользователей, с которым общался текущий пользователь, скажем, у меня есть 4 пользователя и три беседы. В разговоре 1 пользователь1 (Джон) разговаривал с пользователем 2 (Смит) и в разговоре2 пользователь2 (Смит) разговаривал с пользователем 3 (Майкл), а в разговоре3 пользователь1 (Джон) общался с пользователем 3 (Майкл), поэтому, когда пользователь1 входил в свою учетную запись в своем почтовом ящике там будут отображаться две беседы с именем пользователя Смит и другие с именем пользователя Майкл и так далее .. вот мои столы ..

1. Пользователи:

  • id
  • имя пользователя
  • пароль

2. разговоры:

  • conversation_id
  • from_user
  • to_user

3. Сообщения:

  • message_id
  • conversation_id
  • user_id
  • message_text
  • message_date
  • видели

это должно быть похоже на фейсбук мессенджер ... любая помощь будет оценена спасибо

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Поиск таким образом

SELECT conversation_id, from_user AS userid FROM conversations WHERE to_user   = 'the_loggued_user'
UNION
SELECT conversation_id, to_user   AS userid FROM conversations WHERE from_user = 'the_loggued_user'

Присоединение к пользовательской таблице:

SELECT C.conversation_id, C.userid, U.username
FROM(
    SELECT conversation_id, from_user AS userid FROM conversations WHERE to_user   = 'the_loggued_user'
    UNION
    SELECT conversation_id, to_user   AS userid FROM conversations WHERE from_user = 'the_loggued_user'
    ) C
INNER JOIN Users U ON U.id=C.userid
0 голосов
/ 08 сентября 2018

Я действительно не знаю, это ваша позиция, но я постараюсь помочь.

Прежде всего, вам нужно, когда кто-то отправляет сообщение, вам нужно проверить таблицу Разговор , если разговор уже существует, если вы не создадите его, но вам нужно добавить новый столбец, который сохраняет дату последнего отправленного или полученного сообщения и присваивает ей имя Last_Message . Когда кто-то отправляет сообщение, вы обновляете дату и время в этом столбце, а затем вставляете сообщение, отправленное пользователем, в Сообщения Таблица.

Теперь, когда пользователь открывает свою папку «Входящие», вам нужен только запрос, чтобы выбрать беседу, соответствующую его имени пользователя, в столбцах from_user или to_user , отсортированных по дате и времени, сохраненным в столбце. Last_Message .

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