Запрос Postgresql, включающий три таблицы - PullRequest
1 голос
/ 23 июля 2010

У меня есть три таблицы, скажем:

(1) Название: Группы

Столбцы: gid, имя группы

(2) Имя: Профили

Столбцы: profileid, profname

(3) Название: GroupsProfiles

Столбцы: gid, profileid - соответствует столбцам в предыдущих таблицах

Теперь, скажем, у меня есть массив профилей, я хотел бы создать запрос, который найдет соответствующий gid в GroupsProfiles и затем соответствующее имя группы в Groups из этого.

Я играл с соединениями и другими вещами, но не совсем получал то, что хотел. Есть идеи?

1 Ответ

1 голос
/ 23 июля 2010

Используйте объединение (замените your_profile_id идентификатором профиля, который вам нужен):

SELECT p.profileid
     , g.gid
     , g.GroupName
  FROM Groups g
     , Profiles p
     , GroupsProfiles gp
 WHERE g.gid = gp.gid
   AND p.profileid = gp.profileid
   AND p.profileid = your_profile_id

Этот запрос будет выполняться для каждого идентификатора профиля.Если вы хотите получить информацию для всех профилей или для подмножества профилей, вы можете удалить условие your_profile_id или использовать предложение IN, если вы знаете, какие из них вы хотите, например,

SELECT g.gid
     , g.GroupName
  FROM Groups g
     , Profiles p
     , GroupsProfiles gp
 WHERE g.gid = gp.gid
   AND p.profileid = gp.profileid
   AND p.profileid IN (profile_id_1, profile_id_2, ... ,profile_id_N)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...