postgreSQL加入并嵌入记录阵列
问题描述:
我有两个表。一个是事件另一个是人。他们是这样的:postgreSQL加入并嵌入记录阵列
events | data_type
--------------------+-----------
event_id | integer
start | TIMESTAMP WITH TIME ZONE
end | TIMESTAMP WITH TIME ZONE
people | data_type
--------------------+-----------
people_id | integer
name | TEXT
event_id | integer
我想查询事件信息的单一事件,但我也希望得到谁将会是在一个事件的嘉宾名单(绑人)。
输出我最终寻找这个样子的(转换成JSON):
{
"event_id": 1,
"start": Fri, 05 Aug 2016 21:18:38 GMT,
"end": Fri, 05 Aug 2016 21:18:38 GMT,
"guests": [
{"name": "John", event_id: 1}, //record from people table
{"name": "Sarah", event_id: 1}
]
}
我怎样才能很好地执行PostgreSQL中加入该会检索所有相关的人记录我有吗?
到目前为止,我有以下查询:
SELECT
*
FROM events, people
WHERE events.event_id = people.event_id
答
不知道如果我嘲笑你的表的权利。这是否有诀窍?
with events as (select * from events)
select jsonb_set(
to_jsonb(events.*)
, '{guests}'
,to_jsonb(array_agg(to_json(people))
)
)
from people
join events on people.event_id = events.event_id
group by events.*
;
你有什么版本的Postgres的?.. –
我相信最新的,所以9.6.x – ApathyBear
可以填充DDL两个表吗?.. –