Get private message group by user SQL
===

I try to make an SQL which bring me last message from each user who send me

I have two tables

**users**
<pre>
id | username
6         6666
7         8888
</pre>

**messages**

<pre>
message_id | sender_id | receiver_id | subject | text | date
1            6           3             aaa       bbb    2012-07-22 00:14:41
2            6           3             aaa1      bbb1   2012-07-22 00:15:41
3            7           3             vvv       vvv    2012-07-22 00:19:41
</pre>

so result must be (ordered by date(time))

<pre>
3            7           3             vvv       vvv    2012-07-22 00:19:41
2            6           3             aaa1      bbb1   2012-07-22 00:15:41
</pre>

I have made this query (I tested that my id = 3) below query working as I want but I think it is not so good (optimized) and there is more easier way to select this data

    SELECT u.username, m.sender_id , m.subject, m.message
                    FROM users u
                    LEFT JOIN messages m ON m.sender_id = u.id OR m.message_id = (SELECT b.message_id FROM messages b WHERE b.receiver_id = 3 ORDER BY b.date DESC LIMIT 0,1)
                    WHERE m.receiver_id = 3
                    GROUP BY m.sender_id
                    ORDER BY m.date DESC