Я разрабатываю приложения чата. У меня имеются следующие таблицы в моей базе данных MySQL:
USERS:
[ id, username, email ]
CHAT_ROOMS:
[id, created_at, updated_at ]
CHAT_ROOM_USER:
[ id, user_id, chat_room_id ]
MESSAGES:
[ id, sender_id, message, created_at, updated_at ]
Как мне вывести список чатов для каждого пользователя, где в качестве заголовка чата будет имя собеседника?
Я делаю такой запрос, он мне возращает последние сообщения из чатов каждого пользователя, но как мне выводить еще и username собеседника? Мне кажется это должен быть какой-то подзапрос?
SELECT chat_rooms.id,messages.message AS 'last_message', messages.created_at FROM chat_room_user JOIN chat_rooms ON chat_room_user.chat_room_id = chat_rooms.id JOIN users ON chat_room_user.user_id = users.id JOIN messages ON chat_room_user.chat_room_id = messages.chat_room_id WHERE users.id = $user_id AND messages.id IN (SELECT MAX(messages.id) FROM messages GROUP BY messages.chat_room_id) ORDER BY messages.created_at DESC;