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

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

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

tbl\U订单

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

tbl\订单\项目

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

预期结果

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

  1. [
  2. {
  3. id: 1,
  4. customer_name: perona,
  5. data: 6/7/2018,
  6. items: [
  7. { id: 4, item_name: umbrella },
  8. { id: 5, item_name: doll },
  9. ]
  10. },
  11. {
  12. id: 2,
  13. customer_name: zorro,
  14. data: 6/8/2018,
  15. items: [
  16. { id: 1, item_name: compass },
  17. { id: 2, item_name: sword },
  18. { id: 3, item_name: yakuta },
  19. ]
  20. }
  21. ]

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

tkclm6bt

tkclm6bt1#

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

  1. SELECT [order].*,
  2. [items].[id] AS [items.id]
  3. [items].[item_name] AS [items.item_name]
  4. FROM
  5. (
  6. SELECT [id],
  7. [customer_name],
  8. [date]
  9. FROM [tbl_order]
  10. ) AS [order]
  11. INNER JOIN
  12. [tbl_order_items] AS [items]
  13. ON
  14. [order].[id] = [items].[order_id];

相关问题