获取嵌套项node-mysql的记录

时间:2018-06-07 07:00:24

标签: mysql express node-mysql

我在我的expressjs应用程序中使用node-mysql进行数据库查询操作,并且我希望从查询中获得嵌套结果。但似乎我找不到如何以一种简单的方式做到这一点的方法。

  

在他们的文档中,我找到了 Joins with overlapping column names   它可以查询表名并嵌套列。不过这个   不适用于一对多或多对多结构。

以下是表格结构和预期结果的示例。

tbl_order

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

tbl_order_items

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中有没有其他选项可以做同样的事情?

1 个答案:

答案 0 :(得分:0)

您可以使用INNER JOIN根据您的关联获取嵌套数据。

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];