MySQL使用nodeJs嵌套Json对象

我有两个MySQL表

def update_elevation(elevation_map,start,stop,delta):

    for i in range(start[0],stop[0]+1):
        for j in range(start[1],stop[1]+1):
            elevation_map[i][j] += delta

category(id,name) product(id,name,category_id) product(category_id)的外键,这种关系是一对多的关系,因此一个类别可以有许多产品。

我正在尝试从数据库中获取此信息,并以JSON格式返回它用于多个类别,因此它看起来像这样:

category(id)

产品嵌套在其相应类别的实体中的地方。

我是一个新手,不确定如何使用MySQL的nodeJs重现此内容。请协助

opqissmart 回答:MySQL使用nodeJs嵌套Json对象

在MySQL中,您可以使用json generator function json_object()json aggregate function json_arrayagg()

以下查询为每个类别生成一个记录,每个记录包含一个json对象:

select 
    json_object(
        'id',c.id,'name',c.name,'products',json_arrayagg(
            json_object(
                'id',p.id,p.name
            )
        )
    ) cat
from category c
inner join product p on p.category_id = c.id
group by c.id,c.name

如果您想将所有记录聚合到一个唯一的json数组中,则可以添加另一级聚合:

select json_arrayagg(cat)
from (
    select 
        json_object(
            'id',json_arrayagg(
                json_object(
                    'id',p.name
                )
            )
        ) cat
    from category c
    inner join product p on p.category_id = c.id
    group by c.id,c.name   
) t
本文链接:https://www.f2er.com/3163888.html

大家都在问