使用嵌套项节点mysql获取记录

pxy2qtax  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(358)

我在expressjs应用程序中使用node mysql进行数据库查询操作,我想从查询中获得嵌套结果。但我似乎找不到一个简单的方法。
在他们的文档中,我发现了具有重叠列名的联接,这些联接可以查询表名,并与列嵌套。然而,这不适合于一对多或多对多结构。
下面是表格结构和预期结果的示例。

tbl\U订单

id    customer_name    date
1     Perona           6/7/2018
2     Zorro            6/8/2018

tbl\订单\项目

id    order_id   item_name
1     2          compass
2     2          sword
3     2          yakuta
4     1          umbrella
5     1          doll

预期结果

我想得到所有订单和包含订单的项目。

[
    {
       id: 1,
       customer_name: perona,
       data: 6/7/2018,
       items: [
          { id: 4, item_name: umbrella },
          { id: 5, item_name: doll },
       ]
    },
    {
       id: 2,
       customer_name: zorro,
       data: 6/8/2018,
       items: [
          { id: 1, item_name: compass },
          { id: 2, item_name: sword },
          { id: 3, item_name: yakuta },
       ]
    }
]

有没有什么办法可以让你在家里做同样的事 node-mysql ?

tkclm6bt

tkclm6bt1#

可以使用内部联接根据关联获取嵌套数据。

SELECT [order].*,
       [items].[id] AS [items.id]
       [items].[item_name] AS [items.item_name]
FROM
(
    SELECT [id],
           [customer_name],
           [date]
    FROM [tbl_order]
) AS [order]
INNER JOIN
[tbl_order_items] AS [items]
ON
[order].[id] = [items].[order_id];

相关问题