Многократные проверки IN () для объединенной таблицы с MySQL 5.1 - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть таблица с пользовательскими данными и таблица отношений 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)

Может кто-нибудь объяснить мне, что не так с первым утверждением?Было бы замечательно, если бы кто-нибудь мог показать мне, как решить эту проблему с одним объединением, потому что я должен проверить различное количество групп.

Заранее спасибо, Пит

1 Ответ

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

В первом запросе попробуйте заменить AND на OR. Значение gid столбца не может быть одновременно равно 1 и 2.

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