【问题标题】:Postgresql select multiple records from 2 tables with different number of columnsPostgresql从具有不同列数的2个表中选择多条记录
【发布时间】:2013-05-15 02:50:12
【问题描述】:

我在 postgres 数据库中有 2 个表,其中包含以下记录 -:

TableA
======
ID       DESC          TEAM       STATUS
254      NSW emp       Sales        A
365      NSW,VIC emp   Sales        L
2345     NSW emp       Post Sales   A
...........
.....



TableB
======
ID      STATE
254     NSW
365     NSW
365     VIC
365     QLD
2345    NT
2345    NSW
...........

我想从 2 个表中为每个唯一 ID 选择 ID, DESC, STATUS and STATE,并以以下格式捕获输出。

ID       DESC        STATUS      STATE
254      NSW emp       A          NSW
365      NSW,VIC emp   L          NSW,VIC,QLD
2345     NSW emp       A          NT,NSW
.........

尝试将 SELECT 语句与 JOIN/INTERSECT 和 SELECT ARRAY(....... 这失败了“每个 INTERSECT 查询必须具有相同数量的列”

任何想法将不胜感激?

【问题讨论】:

    标签: postgresql-9.2


    【解决方案1】:
    SELECT TABLEA.ID,
           DESCR,
           TEAM,
           STATUS,
           array_agg(STATE) 
           FROM TABLEA 
            inner join TABLEB
              ON TABLEA.ID = TABLEB.ID 
           GROUP BY TABLEA.ID,DESCR,TEAM,STATUS
    

    【讨论】:

    • 您好,感谢您的回答。请不要只发布代码 sn-p,而是稍微解释一下您的解决方案。
    • 内连接——获取我们两个表中与那里的 id 匹配的列的编号...
    • 内连接 -- 获取我们两个表中与id匹配的列的编号...** Group by** ----仅将 1 列的 id 分组,即从 tablea 和 select stmt---从 tableb 中获取状态列...最后是 array_agg---它为您提供获取所有关系在用逗号分隔的一行中....所有这些 r 仅与那里的 id 匹配:-) 玩得很开心...
    猜你喜欢
    • 2021-08-23
    • 2022-01-26
    • 2011-09-17
    • 1970-01-01
    • 2020-05-06
    • 2022-01-05
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多