My ERD looks like LINK and IMG
I'm making a chat-list-screen API and I want to serve chatmate's name(user.name) and a message's recent content(message.content) to a client.
So I made a query on MySQL.
select u.name, m.content
FROM chat_room as c
INNER JOIN message as m on m.sender_no = c.user_type_2 or c.user_type_2 = m.reciver_no
INNER JOIN user as u on u.user_no= c.user_type_2
WHERE c.user_type_1 = 7
GROUP BY u.name
However it doesn't select the latest message.content when new row stacks on the message table.
message
--------
message_no|chat_room_no|sender_no|reciver_no|. content. | timestamp
------------------------------------------------------------------------
1. |. 1. |. 7. |. 8. |test message1 | 2022.08.30 18:00
2. |. 1. |. 8. |. 7. |test message2 | 2022.08.30 19:00
3. |. 2. |. 7. |. 9. |test message3 | 2022.08.30 20:00
4. |. 2. |. 7. |. 9. |test message4 | 2022.08.30 21:00
5. |. 3. |. 7. |. 10. |test message5 | 2022.08.30 22:00
chat_room
--------
chat_room_no|user_type_1|user_type_2|
---------------------------------------
1. |. 7. |. 8. |
2. |. 7. |. 9. |
3. | 7. |. 10. |
user
--------
user_no|name|
-----------------
7. |testuser7|
8. |testuser8|
9. |testuser9|
10. |testuser10|
Query result
0| name | content
---------------------------
1|testname10|test message 5
2|testname9|test message 3
3|testname8|test message 1
Desired result
(I want to check the latest message data.)
0| name | content
-------------------------
1|testname10|test message 5
2|testname9|test message 4
3|testname8|test message 2
How can I solve this problem?