MySQL вопрос для разговорного приложения - PullRequest
0 голосов
/ 30 апреля 2011

У меня есть приложение, которое управляет разговорами между пользователями на веб-сайте. Он позволяет вести беседу один на один, а также объединять несколько человек в одну беседу.

Вот расположение таблиц mysql

разговоров
conversations_meta

Таблица цветные записи: пользователи связывают разговоры с пользователями, регистрируя user_id и разговор_ид. Он также содержит метаданные о разговоре, характерном для каждого пользователя в разговоре.

У меня проблемы с обнаружением, если разговор с теми же людьми уже существует. Например, если разговор между Эриком Джейсоном и Бобом существует, но, возможно, он старый, и пользователь забыл об этом, а затем пытается создать дополнительный разговор с теми же пользователями, я хотел бы уведомить их о разговоре.

Таким образом, запрос должен заглянуть в таблицу convations_meta и сравнить user_id и dialog_id, чтобы увидеть, существует ли уже такой же разговор. Также я не хотел бы, чтобы он возвращал разговоры, в которых участвуют все те же пользователи и дополнительные пользователи. Основная причина, по которой я разместил этот вопрос здесь, заключается в том, чтобы получить максимально быстрый запрос для выполнения этой задачи, поскольку будет тысячи разговоров.

1 Ответ

0 голосов
/ 30 апреля 2011

Как насчет этого:

SELECT conversations_meta.conversations_id FROM conversations_meta  
where (conversations_meta.user_id=1) or (conversations_meta.user_id=2)
group by conversations_id HAVING count(*) = 2 

ПРИМЕЧАНИЕ : это случай только для двух человек в разговоре.Легко расширяется до случая 3 или более.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...