mysql: getting last conversation of a member with all members in mysql

70 Views Asked by At

I need to get last conversation with all members of member_id 1. Please have a look on the following screen shot:

here are the tables. members and conversations

how i want

1

There are 1 best solutions below

0
On
SET @member = 1; /* change to the member id you want to select*/

SELECT c.member_id,
       m.first_name,
       m.last_name,
       c.message,
       c.msg_time
  FROM (SELECT member_id,
               message,
               msg_time,
               @row_number := CASE WHEN @convid = conv_id
                                   THEN @row_number + 1
                                   ELSE 1
                               END AS rnum,
               @convid := conv_id as grp_id
          FROM (SELECT CASE WHEN sender_id = @member
                            THEN CONCAT(sender_id, receiver_id)
                            WHEN receiver_id = @member
                            THEN CONCAT(receiver_id, sender_id)
                        END conv_id,
                       CASE WHEN sender_id = @member
                            THEN receiver_id
                            WHEN receiver_id = @member
                            THEN sender_id
                        END member_id, 
                       c_id, 
                       message, 
                       msg_time       
                  FROM conversation
                 WHERE receiver_id = @member
                    OR sender_id = @member
               ) conv
        ORDER BY conv_id, 
                 msg_time DESC
       ) c
  JOIN members m
    ON c.member_id = m.member_id
   AND rnum = 1
 ORDER BY c.msg_time;

Result

member_id first_name last_name message      msg_time
4         Washim     Jahan     are u there? 1504886437
5         mujahid    Jahan     yeah!        1504886537
3         Monayem    Jahan     koi          1504887437
2         Baijed     Khan      working      1505996437