У меня есть таблица с пользовательскими данными и таблица отношений am: n для назначения различным группам.Чтобы отфильтровать всех пользователей, принадлежащих к группе 1 и 2, я написал следующий SQL:
SELECT *
FROM user AS u
LEFT JOIN user_groups AS g ON g.uid = u.uid
WHERE 1 IN (g.gid) AND 2 IN (g.gid)
К сожалению, это утверждение не работает.Результат пуст, но есть пользователи, которые находятся в обеих группах.Когда я делаю второе присоединение к user_groups, это работает:
SELECT *
FROM user AS u
LEFT JOIN user_groups AS g ON g.uid = u.uid
LEFT JOIN user_groups AS g2 ON g2.uid = u.uid
WHERE 1 IN (g.gid) AND 2 IN (g2.gid)
Может кто-нибудь объяснить мне, что не так с первым утверждением?Было бы замечательно, если бы кто-нибудь мог показать мне, как решить эту проблему с одним объединением, потому что я должен проверить различное количество групп.
Заранее спасибо, Пит