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

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -