【问题标题】:PostgreSQL query with two inner joins具有两个内部连接的 PostgreSQL 查询
【发布时间】:2020-02-12 18:31:14
【问题描述】:

不太适合 SQL 查询,需要一点帮助才能获得具有两个内部联接的有效查询。

这是我的桌子:

帖子 用户 组织

posts/users 共享一个“user_id”键,它允许我拉出帖子表并让它还包括用户表中的用户名。不过我需要提取更多数据。我还需要从 users 表中包含“org_id”,然后从 orgs 表中提取相应的行。

目前我的 SQL 查询是

SELECT p.*, u.username FROM posts p
INNER JOIN users u
ON p.user_id = u.user_id
ORDER BY p.post_id DESC;

这正确地让我获得了存储在帖子表中的帖子的完整列表并包括用户名。

我需要它来包含来自 orgs 表的数据。

因此,如果帖子 #1 是由用户 #2 创建的,我会将这些信息放在一起。我怎样才能让它进行另一个内部联接,该内部联接需要用户 #2 并从用户的相应组织获取完整的数据集?

【问题讨论】:

    标签: sql postgresql inner-join


    【解决方案1】:

    如果我理解正确,查询将如下:

    SELECT p.*, u.username,o.* FROM posts p
    INNER JOIN users u
    ON p.user_id = u.user_id
    INNER JOIN orgs o
    ON u.org_id=o.org_id
    ORDER BY p.post_id DESC;
    

    您可以了解有关联接的更多信息here

    【讨论】:

      【解决方案2】:

      您可以以同样的方式加入任意数量的表格。请立即尝试:

      SELECT p.*,o.*, u.username FROM posts p
      INNER JOIN users u
          ON p.user_id = u.user_id
      INNER JOIN ORGS O 
          ON u.org_id = o.org_id 
      ORDER BY p.post_id DESC;
      

      更多例子可以在here找到。

      【讨论】:

      • 你太棒了!这是完美的。
      【解决方案3】:

      你快到了。只需在另一个连接条件中添加orgs 表:

      SELECT p.*, o.*, u.username FROM posts p
      INNER JOIN users u
      ON p.user_id = u.user_id
      INNER JOIN orgs o
      ON o.org_id = u.org_id
      ORDER BY p.post_id DESC;
      

      【讨论】:

      • 谢谢!这就是我需要的!
      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      相关资源
      最近更新 更多