2015-02-10 2 views
1

У меня есть 3 таблицы, которые выглядят неопределенно так:Запись JOIN запросов в PostgreSQL с несколькими таблицами

Users 
---------- 
UserID 
Name 
Phone 

User Groups 
----------- 
GroupID 
GroupActivity 

Group Membership 
--------------- 
UserID 
GroupID 

Я пытаюсь напечатать имя пользователя и номер телефона для всех групп с членами проведения определенных Мероприятия. Например, активность группы 1 = вязание, активность группы 2 = шитье и активность группы 3 = вязание. Я хочу выбрать всех участников, которые вяжут, но я не уверен, как присоединиться к трем таблицам в одном запросе. Это то, что я пытался до сих пор:

SELECT                 
users.name, users.phone, groups.activity 
FROM users 
INNER JOIN group_membership ON group_membership.userID = users.userID 
WHERE groups.activity = 'Knitting'; 

Это заканчивает метание следующее сообщение об ошибке:

ERROR: missing FROM-clause entry for table "groups"

Чтобы исправить это, я попытался добавления teams к статье FROM следующим образом:

FROM users,groups 

Однако это в свою очередь дает мне эту ошибку:

ERROR: invalid reference to FROM-clause entry for table "members"

Любая помощь здесь будет оценена.

ответ

0

Try This

SELECT                 
users.name, users.phone, user_groups.activity 
FROM users 
INNER JOIN group_membership ON group_membership.userID = users.userID 
inner join user_groups on user_groups.groupid = group_membership.groupid 
WHERE user_groups.activity = 'Knitting'; 
0

Вы можете иметь, что короче с псевдонимов таблиц и в USING пункте:

SELECT ug.groupid, u.name, u.phone 
FROM user_groups ug 
JOIN group_membership USING (groupid) 
JOIN users u   USING (userid) 
WHERE ug.activity = 'knitting'; 

Details in the manual here.

Смежные вопросы