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