sql select как таблица соединений - PullRequest
1 голос
/ 13 января 2012

у меня есть одна таблица, которая содержит эти поля

mid , email
  1 , 'user_a@...'  
  2 , 'user_b@...' 
  3 , 'user_c@...' 

, а затем другая таблица со следующими полями / значениями

tid, name  
  1, t_a
  2, t_b 
  3, t_c 

и другая таблица

tid, mid
  1, 1
  1, 2
  1, 3
  2, 2
  2, 3
  3, 1
  3, 2

Как я могу получить всех пользователей, у которых есть 't_a' и 't_b' .. Мне нужно вернуть

user_a,
user_c

Поскольку user_b не содержит t_a

1 Ответ

2 голосов
/ 13 января 2012
SELECT e.email
    FROM emails e
        INNER JOIN email_tags et
            ON e.mid = et.mid
        INNER JOIN tags t
            ON et.tid = t.tid
    WHERE t.name IN ('t_a', 't_b')
    GROUP BY e.email
    HAVING COUNT(DISTINCT t.name) = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...