SELECT r1.chat_id, r2.message_id, r3.message, r3.user_id as 'user_1', r4.user_id as 'user_2',
r5.name FROM (
SELECT chat_id, MAX(date) as 'max_date'
FROM init_chat_messages
GROUP BY chat_id
)
r1
INNER JOIN init_chat_messages as r2
JOIN init_messages r3
JOIN init_chat_users r4
JOIN init_chats r5
on r1.chat_id = r2.chat_id AND r1.max_date =
r2.date and r2.message_id =
r3.id and r4.chat_id = r2.chat_id and
r5.id= r1.chat_id
where ( r3.user_id = 4 or r4.user_id = 4) and r4.user_id != r3.user_id
GROUP by r2.message_id