在Postgres中将表连接为数组

时间:2017-11-30 15:33:27

标签: postgresql

我想将子选择的结果作为JSON加入,但是我很难搞清楚如何使用。

我有以下查询:

select books.* from libraries inner join books on libraries.id = books.id

我还希望将另一个表中的结果作为JSON加入。

为此,我想使用像

这样的东西
select row_to_json(page) from (select * from pages) page

我想获得每行包含book列的结果,库列和页面表示为JSON列。关于如何实现这一点的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设您希望将页面ID作为jsonb对象的数组。我认为将页面ID聚合为数组可能是一个不错的选择。

SELECT
  libraries.id,
  books.id,
  JSONB_AGG
  (
    JSON_BUILD_OBJECT
    (
      'id', pages.id
    )
  ) AS page
  FROM libraries
    INNER JOIN books ON books.id = libraries.id -- books.id really matches libraries.id?
    INNER JOIN pages ON pages.book_id = books.id
  GROUP BY
    libraries.id,
    books.id;