MySQL находит соответствующий набор строк - PullRequest
0 голосов
/ 03 мая 2018

У меня есть таблица перекрестных ссылок, которая обеспечивает отношение «многие ко многим» между пользователями и таблицами групп пользователей. Он содержит два соответствующих столбца: group_id и user_id (сюрприз, сюрприз!). Когда пользователь хочет создать новую группу, я хочу сначала проверить, существует ли этот набор пользователей как группа.
По сути, я бы определил проблему как"Учитывая набор пользовательских идентификаторов, найдите любой набор строк, которые соответствуют набору пользовательских идентификаторов, и у всех один и тот же идентификатор группы".

Редактировать

Я ищу точную группу пользователей, которую не интересно видеть в группах наборов результатов, которые включают этих пользователей в дополнение к другим пользователям.

Пример данных

sample data

У меня есть догадка, что подзапрос - это путь, но я не могу понять, как его организовать. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 03 мая 2018

Это то, что вы хотите?

select groupid
from usergroups ug
where userid in ($user1, $user2, . . . , $usern)
group by groupid
having count(*) = <n>;

Возвращает все группы, которые имеют предоставленный список пользователей.

Если вы хотите установить точный , то:

select groupid
from usergroups ug
group by groupid
having count(*) = sum( userid in ($user1, $user2, . . . , $usern) );

Это предполагает, что у групп не бывает одного и того же пользователя дважды (это не сложно отрегулировать, но условие усложняется).

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