У меня возникли проблемы с поиском правильного названия для этого.
Я работаю над системой обмена сообщениями с двумя таблицами, одна со всеми разными разговорами (пользователи в разговоре и uid разговора), а другая содержит сообщения между пользователями.
Для каждого разговора я создаю строку для каждого пользователя в разговоре с uid разговора и user_id. В разговорах может быть только 2 пользователя, но и много больше (3,4,5,6 и т.д.)
У меня проблема с оператором SQL, которую я не знаю, как решить. Проблема в том, что когда допустим, что есть разговор между 3 пользователями, после этого допустим, что 2 пользователя хотят начать общаться друг с другом наедине без третьего пользователя. Как я могу заставить оператор SQL ничего не возвращать, когда 2 пользователя уже разговаривают вместе с другими пользователями. Так что я могу добавить 2 новые строки в свою таблицу с их собственными частными talk_id.
таблица conversation_list
выглядит так:
|id | user_id| conversation_id|
-----------------------------
| 1 | 1| 1|
| 2 | 3| 1|
| 3 | 1| 2|
| 4 | 2| 2|
| 5 | 4| 2|
И на данный момент мой код SQL выглядит так:
SELECT *
FROM conversation_list
WHERE user_id IN (user1_id,user_id2)
GROUP BY conversation_id
HAVING COUNT(*) = 2
COUNT(*) > 2
, он ничего не вернет, даже если две строки были только что добавлены, и в этом случае он должен вернуть chat_id ранее вставленной строки. - person Joris Blanc   schedule 07.06.2012