我有两个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重现此内容。请协助
答案 0 :(得分:1)
在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,
'name', 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', c.id,
'name', c.name,
'products', json_arrayagg(
json_object(
'id', p.id,
'name', p.name
)
)
) cat
from category c
inner join product p on p.category_id = c.id
group by c.id, c.name
) t