【问题标题】:Postgres - Query that Join two tablesPostgres - 连接两个表的查询
【发布时间】:2021-07-27 08:45:54
【问题描述】:

我有两张表需要将它们合并到一张表中。

1:第一次查询

SELECT cu.user_name,
       li.successdate
FROM logininfo li
JOIN user_mapping um ON um.user_key = li.username
JOIN cwd_user cu ON um.username = cu.user_name
ORDER BY successdate;

结果:

      user_name      |       successdate
---------------------+-------------------------
 K_Daniel           | 2018-09-02 13:38:22.331 

2:第二次查询

WITH last_login_date AS
(SELECT user_id
      , to_timestamp(CAST(cua.attribute_value AS double precision)/1000) AS last_login
   FROM cwd_user_attribute cua
  WHERE cua.attribute_name = 'lastAuthenticated'
    AND to_timestamp(CAST(cua.attribute_value AS double precision)/1000) < (CURRENT_DATE))
SELECT c.user_name
     , g.group_name
  FROM cwd_user c
 INNER JOIN last_login_date l ON (c.id = l.user_id)
 INNER JOIN cwd_membership m  ON (c.id = m.child_user_id)
 INNER JOIN cwd_group g       ON (m.parent_id = g.id)
 WHERE g.group_name LIKE '%CEO-%' ;

结果:

    user_name     |                     group_name
------------------+----------------------------------------------------
 K_Daniel        | CEO-Building1 

3-这是预期的结果:

      user_name      |       successdate       |        group_name
---------------------+-------------------------+-----------------------
     K_Daniel        | 2018-09-02 13:38:22.331 |       CEO-Building1

加入这些表的合适查询是什么?

任何想法

谢谢,

【问题讨论】:

  • 您应该添加示例数据。
  • 在结果部分我放了样本,我有两个这样的表table 1 user_name | successdate K_Daniel | 2018-09-02 13:38:22.331 table 2 user_name | group_name K_Daniel | CEO-Building1
  • 你应该在你的问题中添加它,而不是在这里,
  • 它存在于帖子中,在结果下。

标签: sql postgresql join


【解决方案1】:

在 serval 解决方法之后,我找到了解决方案。

WITH last_login_date AS
(SELECT user_id
      , to_timestamp(CAST(cua.attribute_value AS double precision)/1000) AS last_login
   FROM cwd_user_attribute cua
  WHERE cua.attribute_name = 'lastAuthenticated'
    AND to_timestamp(CAST(cua.attribute_value AS double precision)/1000) < (CURRENT_DATE))
SELECT c.user_name
     , li.successdate
     , g.group_name
  FROM cwd_user c
 INNER JOIN last_login_date l ON (c.id = l.user_id)
 INNER JOIN cwd_membership m  ON (c.id = m.child_user_id)
 INNER JOIN cwd_group g       ON (m.parent_id = g.id)
 INNER JOIN user_mapping um ON (c.user_name = um.username)
 INNER JOIN logininfo li ON (um.user_key = li.username)
 WHERE g.group_name LIKE 'CEO-%' ;

【讨论】:

    猜你喜欢
    • 2019-07-01
    • 2015-09-23
    • 1970-01-01
    • 2014-11-07
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    相关资源
    最近更新 更多