gpt4 book ai didi

javascript - 在nodeJs上,SQL Server可以将连接表返回为对象数组吗?

转载 作者:行者123 更新时间:2023-12-01 00:14:25 25 4
gpt4 key购买 nike

我的表数据是:

                 **partMaster**

id partNumber rev
|------------|------------|------------|
| 01 | assy1 | C |
|------------|------------|------------|
| 02 | comp1 | A |
|------------|------------|------------|
| 03 | comp2 | F |
|------------|------------|------------|

**boms**

id partId itemId qty
|------------|------------|------------|------------|
| 01 | 01 | 02 | 5 |
|------------|------------|------------|------------|
| 02 | 01 | 03 | 11 |
|------------|------------|------------|------------|

我的查询是

SELECT *
FROM partMaster
left join boms on boms.partId = partMaster.id
WHERE (partMaster.id = '01')

这将返回(以及其他内容)一个记录集,例如,

[
{
id:[01,01],
partNumber:'ASSY1'
rev:'C',
itemId:'02',
qty:5
}
,
{
id:[01,01],
partNumber:'ASSY1'
rev:'C',
itemId:'03',
qty:11
}
]

这对我来说非常令人困惑。我更喜欢这样的东西,

[{
id:01,
partNumber:'assy1',
rev:'c'
boms:[{id:01,partId:01,itemId:02,qty:5},{id:02,partId:01,itemId:03,qty:11}] //Left Joined Table
}]

这对于 SQL Server(或任何 NodeJs 兼容的 SQL 数据库)可能吗?

最佳答案

如果您使用的是 SQL Server 2016 或更高版本,则可以使用 FOR JSON

SELECT
p.id,
p.partNumber,
p.rev,
(SELECT b.id, b.partId, b.itemId, b.qty FOR JSON PATH) as boms
FROM partMaster p
left join boms b on b.partId = p.id
WHERE (p.id = '01');

旁注:最佳实践是永远不要在代码中使用 SELECT *。始终只返回结果集中需要的内容。表架构可能会随着时间的推移而发生变化,这使得 SELECT * 的结果也会发生变化。

关于javascript - 在nodeJs上,SQL Server可以将连接表返回为对象数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59867454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com