I have this table in my database:

sentByand sentToare in table FK to User.
In this table, I have messages between users:
sentBy | sentTo | dateSent | body
-------+----------+------------------+-----------------
1 | 2 | 11/21/2010 10:00 | Hey!
-------+----------+------------------+-----------------
2 | 1 | 11/21/2010 10:50 | Hi!
-------+----------+------------------+-----------------
1 | 2 | 11/21/2010 10:51 | msg body 1
-------+----------+------------------+-----------------
2 | 1 | 11/21/2010 11:05 | msg body 2
-------+----------+------------------+-----------------
1 | 3 | 11/21/2010 11:51 | msg body 3
-------+----------+------------------+-----------------
3 | 1 | 11/21/2010 12:05 | msg body 4
-------+----------+------------------+-----------------
1 | 3 | 11/21/2010 12:16 | msg body 5
-------+----------+------------------+-----------------
4 | 1 | 11/21/2010 12:25 | msg body 6
-------+----------+------------------+-----------------
I need to know the users that user 1 spoke to and the users who talked to user 1 . In this case, with users 2, 3, and 4 (note that user 4 sent a message to user 1, but user 1 has not sent a message yet).
And the second question: how can I get the last message with each user? I ask to receive the last message sent to the user.
, 1, 2 : msg body 2. 3 msg.
SQL SELECT? , , .
- WhatsApp. , ( ), ( ).
, Conversation, sentBy sentTo , , , , .
:
sentBy | sentTo | dateSent | body
-------+----------+------------------+-----------------
2 | 1 | 11/21/2010 11:05 | msg body 2
-------+----------+------------------+-----------------
1 | 3 | 11/21/2010 12:16 | msg body 5
-------+----------+------------------+-----------------
4 | 1 | 11/21/2010 12:25 | msg body 6
-------+----------+------------------+-----------------