Получить людей, которые находятся в обоих сетах

У меня есть вопрос, который я не знаю, как правильно задать вопрос, поэтому я начну с инструкции SQL (Postgres):

SELECT pc.person_id
  FROM groups g
  LEFT OUTER JOIN group_clubs gc ON (gc.group_id = g.id)
  LEFT OUTER JOIN person_club pc ON (gc.club_id = pc.club_id)
 WHERE g.id = 2

Что у меня есть: группа, которая имеет критерии с клубом, пользователь должен быть в. Это разделено на groups стол, group_clubs стол и person_club Таблица

Чего я хочу: я хочу, чтобы все люди, которые находятся во ВСЕХ клубах, подключались к этой группе. Что я получаю: я получаю всех людей, которые хотя бы в одном из клубов.

Я застрял и понятия не имел, как получить результат, только мне нужно пересечь результаты, но я не знаю, как это сделать сейчас...?!?

РЕДАКТИРОВАТЬ: Чтобы объяснить, что я ищу, вот заявление, которое делает то же самое:

SELECT pc.person_id
  FROM person_club pc
 WHERE pc.club_id IN (
    SELECT gc.club_id
      FROM group_clubs gc
      WHERE gc.group_id = 2
 );

Что я хочу это:

SELECT pc.person_id
  FROM person_club pc
 WHERE pc.club_id IN ALL(
     SELECT gc.club_id
       FROM group_clubs gc
      WHERE gc.group_id = 2
);

Человек должен быть ВСЕ из group_clubs, перечисленных в этом заявлении!

2 ответа

Решение

Я получил ответ благодаря коллеге:

SELECT pc.person_id
  FROM person_club_data pc
  INNER JOIN group_clubs gc ON (gc.club_id = pc.club_id)
 WHERE gc.group_id = 2
 GROUP BY pc.person_id
 HAVING COUNT(pc.person_id) >= (
     SELECT COUNT(gc.club_id)
       FROM group_clubs gc2
      WHERE gc2.group_id = 2
 )

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

Попробуй это:

SELECT pc.person_id
  FROM groups g
  INNER JOIN group_clubs gc ON (gc.group_id = g.id)
  INNER JOIN person_club pc ON (gc.club_id = pc.club_id)
 WHERE g.id = 2

Я не думаю, что вам нужна последняя строка (предложение WHERE), если вы не хотели просто получить одного человека.

Другие вопросы по тегам