2017-09-08 1 views
-4

内のすべてのメンバーとメンバーの最後の会話を取得し、次のスクリーンショットで見てください。mysqlの:私はMEMBER_ID 1 のすべてのメンバーとの最後の会話を取得する必要がありますmysqlの

here are the tables. members and conversations

how i want高度な

+0

member_id = 1 ..しかし、送信者または受信者としてですか? .. – scaisEdge

+0

sender_idまたはreceiver_id –

+0

これらの2つのテーブルのSQLファイルとしてエクスポートして、私たちが何かを試すことができるように私たちにリンクを与えることができますか? –

答えて

0
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; 

結果

感謝

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 
関連する問題