首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多个枢轴表上使用json_arrayagg函数

如何在多个枢轴表上使用json_arrayagg函数
EN

Database Administration用户
提问于 2022-01-26 03:28:25
回答 1查看 516关注 0票数 0

如标题所示,请考虑下面的示例,其中有三个表和两个枢轴表

代码语言:javascript
复制
#Tables
user(user_id char(42));
role(role_id char(42));
task(task_id char(42));

#Pivot tables
user_role(user_id char(42),role_id char(42));
role_task(role_id char(42),task_id char(42));

如果我想使用json_arrayagg函数提取以下JSON,应该采取什么方法?

代码语言:javascript
复制
[{
    "id": "userId",
    "roles": [{
        "id": "roleId",
        "tasks": [{
            "id": "taskId"
        }]
    }]
}]

下面是与模式和示例数据的Db小提琴链接,以及关于如何解决问题的我的想法链接。

EN

回答 1

Database Administration用户

发布于 2022-01-26 14:07:08

这是另一个例子:

代码语言:javascript
复制
select json_arrayagg(jt.jo ) from (
select
  json_object(
    'id',
    ur.user_id,
    'roles',
    json_arrayagg(
      (select json_object(
                'id',
                rt.role_id,
                'tasks',
                json_arrayagg(
                  json_object('id', rt.task_id)
                )
              )
         from role_task rt
         where  rt.role_id = ur.role_id
         group by rt.role_id
      ))
    ) jo
  from user_role ur
  group by ur.user_id
  order by ur.user_id
) jt
;

这把小提琴所示

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/306589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档