[英]Postgresql - Merge field to JSON object in a query
Hello everyone, I have the following query below which contains a sub query:大家好,我有以下查询,其中包含一个子查询:
SELECT g.id, g.name, data.permissions, gp.has_permission
FROM groups g
RIGHT JOIN groups_permissions gp ON gp.group_id = g.id
RIGHT JOIN (SELECT p.id, array_to_json(array_agg(to_json(p.*)))
FROM permissions p
GROUP BY p.id) AS data (id, permissions) ON (gp.permission_id = data.id)
WHERE g.id=1
This query returns the result bellow:此查询返回以下结果:
[
{
"id": "7a588463-1780-459a-9646-8f19e9cb6ded",
"name": "Administradores",
"permissions": [
{
"id": "bf9d5ee3-d554-4faa-9cf4-9c60acb79801",
"name": "Criar Grupos",
"slug": "criar-grupos",
"created_at": "2020-12-07T00:50:05.017783",
"updated_at": "2020-12-07T00:50:05.017783"
}
],
"has_permission": true
}
]
I would like to have the has_permission field inside the object in the permissions array.我想在权限数组中的 object 中有 has_permission 字段。
Could someone help merge that field with the object?有人可以帮助将该字段与 object 合并吗?
Thank you for now.现在谢谢你。
Don't you just need to add has_permission to the json subrecord?您不只需将 has_permission 添加到 json 子记录吗?
SELECT g.id, g.name, data.permissions
FROM groups g
RIGHT JOIN groups_permissions gp ON gp.group_id = g.id
RIGHT JOIN (SELECT p.id, array_to_json(array_agg(to_json(p.*, gp.has_permission)))
FROM permissions p
GROUP BY p.id) AS data (id, permissions) ON (gp.permission_id = data.id)
WHERE g.id=1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.