mysql - Request to select the last 10 send/received messages to/by different users -
i want select 10 last messages received or sent different users.
for example results must shown that:
1. john1 - last message received 04/17/10 3:12 2. thomy - last message sent 04/16/10 1:26 3. pamela - last message received 04/12/10 3:51 4. freddy - last message received 03/28/10 9:00 5. jack - last message sent 03/20/10 4:53 6. tom - last message received 02/01/10 7:41 .....
table looks like:
create table `messages` ( `id` int(11) not null auto_increment, `time` timestamp not null default current_timestamp, `sender` int(11) default null, `receiver` int(11) default null, `content` text )
i think facebook (and iphone) uses solution. when go mail box, have last messages received/sent grouped users (friends).
so take example. if have theses messages (they ordered yet):
**mike** **tom** **pam** mike mike **john** john pam **steve** **bobby** steve steve bobby
only message **** should returned because last messages sent/received user.
in fact want last message of each discussion.
what solution?
the question unclear. if want last 10 messages involve user #12345, use:
select * messages sender = 12345 or receiver = 12345 order time desc limit 10
update match updated requirements. not elegant, works long no user sends 2 messages @ same second.
select m1.* messages m1 inner join (select max(time) time, if(receiver = 12345, sender, receiver ) user messages group user) m2 on m1.time = m2.time , (m1.sender = m2.user or m1.receiver = m2.user) sender = 12345 or receiver = 12345 order m1.time desc
Comments
Post a Comment