我有一个PostgreSQL数据库,如下所示:
content
id title content
1 Home Welcome to the homepage
-
fields
id contentID value
1 1 Field Value 1
2 1 Field Value 2
3 2 Field value in other content
我正在尝试编写一个结合两者数据的查询,最终出现:
[ { 标题:'家', 内容:'欢迎来到主页', 领域:[ { id:1, contentID:1, 值:'字段值1' }, { id:2, contentID:1, 值:'字段值2' } ] } ]
以下是我尝试的查询,希望在一个查询中执行所有操作:
let data = await query(`SELECT *, (SELECT array(SELECT * FROM stuff.fields WHERE stuff.fields.contentID=stuff.content.id)) as fields FROM stuff.content`);
请注意stuff
是模式名称,我对PostgreSQL来说是新手,但我喜欢它与MySQL相比的数据灵活性和速度,我不认为MySQL可以做这样的事情。
答案 0 :(得分:1)
预期输出看起来像json。使用jsonb functions:
project.assets.json
得到这个json:
select to_jsonb(c)- 'id' || jsonb_build_object('fields', jsonb_agg(to_json(f)))
from content c
join fields f on c.id = f.content_id
group by c.id;