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
Post a Comment