Как правильно составить SQL запрос в данном случае?
У меня есть 3 таблицы: messages (в ней хранится информация о том, кто отправил сообщение, текст сообщения и дата), dialogues (в ней хранится информация о двух пользователях, которые находятся в диалоге и ID последнего сообщения в этом диалоге), users (в ней хранится имя пользователя и остальные данные). Мне необходимо получить такой результат одним запросом: в таблице dialogues я получаю ID получателя сообщения (записываю его в first_user) и получаю ID последнего сообщения в этом диалоге, после этого мне нужно получить имя получателя сообщения по ID из таблицы users, после этого мне нужно получить текст сообщения и дату сообщения по ID последнего сообщения из таблицы messages.
Тут я получаю ID последнего сообщения в нужном мне диалоге и ID получателя сообщения, которое записывается в first_user
SELECT last_message,
CASE WHEN first_user=1 THEN second_user
WHEN second_user=1 THEN first_user
ELSE first_user
END
FROM dialogues;
По итогу у меня должна получится такая таблица/ответ: username (имя пользователя из таблицы users), content (текст сообщения из таблицы messages), date (дата сообщения из таблицы messages).
Сразу хочу извиниться за то, что я где-то объяснил непонятно. Я сейчас максимально сонный и мозг уже не варит. Всем заранее спасибо!
Ответы (1 шт):
messages
message_id, user_id, text, timestamp
dialogues
user_id_1, user_id_2, last_message_id
users
user_id, name, lastname, age
select
d.user_id_2 as first_user,
d.last_message_id,
u.name,
m.text
m.timestamp
from dialogues as d
left join users as u
on d.user_id_2 = u.user_id
left join messages as m
on d.last_message_id = m.message_id