mysql - Check if thread already exists in group conversation -


i've platform users send messages. group conversation possible to.

my thread_members table:

id | user_id | thread_id  -------------------------   1 |    1    |     1    -------------------------   2 |    2    |     1   -------------------------   3 |    1    |     2   -------------------------   4 |    2    |     2   -------------------------   5 |    3    |     2   -------------------------   6 |    1    |     3   -------------------------   7 |    3    |     3   -------------------------   8 |    4    |     3   

when send message, want check if thread exists.

lets say: user_id '1' sends message user_id '2'

the result should thread_id '1'

it should single query

edit

thanks think got answere: i'm not getting problems til now...

in php:

$senderid = $_post['sender']; // integer $receiverids = $_post['receivers']; // array  $query = "select thread_members.*, count(*)            thread_members            join (                select *, count(*)                (                    select *                    thread_members                    user_id = " . $senderid . " ";                 foreach ($receiverids $receiverid)                {                 $query .= " or user_id = " . $receiverid . " ";                 }                $query .= " ) thread_members              group thread_id              having count(*) = " . (count($receiverids) + 1) . "             order count(*)            ) thread_members_copy on thread_members.thread_id = thread_members_copy.thread_id            group thread_members.thread_id            having count(*) = " . (count($receiverids) + 1) . "           order count(*) "; 

(count($receiverids) + 1) receivers + sender

here are:

void main() {     var data = new list<tuple<int, int, int>>{         new tuple<int,int,int>(1,1,1),         new tuple<int,int,int>(2,2,1),         new tuple<int,int,int>(3,1,2),         new tuple<int,int,int>(4,2,2),         new tuple<int,int,int>(5,3,2),         new tuple<int,int,int>(6,1,3),         new tuple<int,int,int>(7,3,3),         new tuple<int,int,int>(8,4,3),     };      var users = data.select(x => x.item2).distinct();     foreach(var user in users){         var threads = data.where(x => x.item2 == user).select(x => x.item3);         foreach(var thread in threads){             var counterparties = data.where(x => x.item3 == thread && x.item2 != user)             .select(x => x.item2);             foreach(var party in counterparties)                 console.writeline("user {0} send thread {1} user {2}", user, thread, party);         }     } } 

the result: user 1 send thread 1 user 2 user 1 send thread 2 user 2 user 1 send thread 2 user 3 user 1 send thread 3 user 3 user 1 send thread 3 user 4 user 2 send thread 1 user 1 user 2 send thread 2 user 1 user 2 send thread 2 user 3 user 3 send thread 2 user 1 user 3 send thread 2 user 2 user 3 send thread 3 user 1 user 3 send thread 3 user 4 user 4 send thread 3 user 1 user 4 send thread 3 user 3

hope helps.


Comments