Как сделать запрос на основе другого результата запроса - PullRequest
0 голосов
/ 03 июня 2019

Я хотел бы знать, как построить запрос на основе другого результата запроса.

например:

У меня есть эта таблица с именем groups:

group_id | user_id | is_admin
  146    |    1    |    1
  146    |    3    |    1
  146    |    6    |    1
  146    |    7    |    1
  102    |    21   |    1
  105    |    174  |    1
  109    |    369  |    1

Итак, я выполняю этот запрос, чтобы получить все группы на основе user_id

SELECT * FROM groups WHERE user_id = 6;

Результат?

group_id | user_id | is_admin
  146    |    6    |    1

Но я бы хотел получить сейчас все группы на основе group_id. Итак, я хотел бы выполнить этот запрос:

 SELECT * FROM groups where group_id = 146;

Итак, у меня есть результат запроса:

group_id | user_id | is_admin
  146    |    1    |    1
  146    |    3    |    1
  146    |    6    |    1
  146    |    7    |    1

В резюме я хотел бы найти, к какой группе или пользователю принадлежит, и выбрать все строки, содержащие их идентификатор_группы

1 - SELECT * FROM groups WHERE user_id = 6;
2 - SELECT * FROM groups WHERE groups in (146,102, ...);

ПРИМЕЧАНИЕ: идентификатор_пользователя может принадлежать более чем одной группе.

Спасибо.

1 Ответ

1 голос
/ 03 июня 2019

Используйте = и подзапрос, если вы ожидаете, что только одна группа на пользователя (как в ваших примерах данных):

select g.*
from groups g
where g.group_id = (select g2.group_id from groups g2 where g2.user_id = 6);

Используйте in, если пользователь может быть в нескольких группах:

select g.*
from groups g
where g.group_id in (select g2.group_id from groups g2 where g2.user_id = 6);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...