【问题标题】:Writing JOIN queries in PostgreSQL with multiple tables在 PostgreSQL 中使用多个表编写 JOIN 查询
【发布时间】:2015-02-10 21:48:40
【问题描述】:

我有 3 个表格,看起来有点像这样:

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';

这最终会引发以下错误:

错误:表“组”缺少 FROM 子句条目

为了解决这个问题,我尝试将 teams 添加到 FROM 子句中,如下所示:

FROM users,groups

但是,这反过来又给了我这个错误:

错误:对表“成员”的 FROM 子句条目的引用无效

如有任何帮助,我们将不胜感激。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    试试这个

    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';
    

    【讨论】:

      【解决方案2】:

      您可以使用表别名和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.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 2014-11-12
        • 2014-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多