【问题标题】:Cross Reference Table to Single Object对单个对象的交叉引用表
【发布时间】:2020-07-02 14:11:14
【问题描述】:

在 postgres 12 中,我有一个存储父 ID 和子 ID 之间关系的表。我想要一个返回单个对象的查询,该对象以父 ID 作为键,以子 ID 数组作为属性。

到目前为止,我得到的最好的结果是一个对象数组,每个对象都有一个映射到子 ID 数组的键:

小提琴: https://dbfiddle.uk/?rdbms=postgres_12&fiddle=1854482bbfc442a24bc34b54bf5481cf

在 pg 中有什么方法可以将这个对象数组“合并”成一个对象吗? (或以其他方式返回单个对象)例如,

{ 1: [3], 2: [4, 5] }

【问题讨论】:

  • 你需要展示你想要的结果。
  • @Abelisto 你会把这个评论变成答案吗?我很乐意将其标记为已接受。

标签: sql json postgresql


【解决方案1】:

在最后阶段构建 JSON 对象:

SELECT
  json_object_agg(parent_id,  z.relationship) AS relationships
FROM (
  SELECT
    parent_id, array_agg(child_id) AS relationship
  FROM
    parent_child_xref
  GROUP BY
    parent_id
) z

fiddle

【讨论】:

    猜你喜欢
    • 2017-08-16
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多