Как мне показать пользователя и последнее сообщение из таблицы базы данных

Я делаю систему чата. Там мне нужно показать пользователю и последнее сообщение между ними. Мне нужна инъекция SQL.
Я хочу показать так:

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

Моя таблица базы данных:

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

О базе данных:
Есть две копии сообщения. ТАК, copy_uid означает, что это сообщение, которое пользователь копирует.

m_id: идентификатор сообщения
ua_id: пользователь, получивший сообщение, его идентификатор
u_id: пользователь, который отправил сообщение, его идентификатор
copy_uid: сообщение должно быть две копии один отправитель и другой получатель

-6

Решение

Используйте эту структуру таблицы:

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

Ответ:

SELECT * FROM `message` `m1`
WHERE m_id IN (
SELECT MAX(m2.m_id)
FROM `message` `m2` WHERE m2.`sender` = 1 OR m2.`receiver` = 1
GROUP BY (IF(m2.`sender`= 1, m2.`receiver`, m2.`sender`)))
ORDER BY time DESC

Предположим, что текущий идентификатор пользователя 1

Результат:

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

0

Другие решения

Я предлагаю упростить вашу структуру сообщений:

Я бы: автоматическое приращение
Удостоверение личности отправителя
recipient_id
послал: bool default 0
текст

следующее сообщение для user_id

select * from msg order by id desc
where recipient_id=user_id and sent=0
limit 1

store $ msgId = msg.id

после отправки
обновление набора сообщений отправлено = 1, где id = $ msgId

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector