Sql server NodeJs-MSSQL组合多个查询的结果
使用Express、node和MSSQL包为应用程序创建后端,我希望在发送到客户端之前在服务器上尽可能多地进行处理 我需要运行两个查询,但在发送到客户端之前,我需要以特定的方式组合数据 第一个查询收集一对一关系的数据,另一个查询收集一对多关系的数据。我想把一对多附加到一对一上 第一个问题:Sql server NodeJs-MSSQL组合多个查询的结果,sql-server,node.js,Sql Server,Node.js,使用Express、node和MSSQL包为应用程序创建后端,我希望在发送到客户端之前在服务器上尽可能多地进行处理 我需要运行两个查询,但在发送到客户端之前,我需要以特定的方式组合数据 第一个查询收集一对一关系的数据,另一个查询收集一对多关系的数据。我想把一对多附加到一对一上 第一个问题: select updatedInfo.*, nameInfo.*, nameInfo.updated as nameUpdated, nameInfo.alreadyCorrect a
select updatedInfo.*,
nameInfo.*, nameInfo.updated as nameUpdated, nameInfo.alreadyCorrect as nameWasCorrect,
addressInfo.*, addressInfo.alreadyCorrect as addWasCorrect, addressInfo.updated as addUpdated,
phoneInfo.*, phoneInfo.alreadyCorrect as phoneWasCorrect, phoneInfo.updated as phoneUpdated,
emailInfo.*, emailInfo.alreadyCorrect as emailWasCorrect, emailInfo.updated as emailUpdated
from updatedInfo join nameInfo on updatedInfo.IndivId=nameInfo.nameInfoId
join addressInfo on updatedInfo.IndivId=addressInfo.addressInfoId
join emailInfo on updatedInfo.IndivId=emailInfo.emailInfoId
join phoneInfo on updatedInfo.IndivId=phoneInfo.phoneInfoId
where updatedInfo.correctedInFNV is not null
order by updatedInfo.IndivId
第二个查询:ID是传递给查询的变量
如何将第二个查询结果附加到正确记录上的第一个查询结果
我使用的是mssql包,使用方式如下:
var sqlConfig = {
server: 'IP',
database: 'db',
user: 'sweeper',
password: 'pass'
}
const connPool = new mssql.ConnectionPool(sqlConfig, err => {
console.error(err);
});
var query = {
getAllUpdatedPool: () => {
connPool.Request().query(`----first query ----`)
.then((set) => {
console.log(set);
return set;
}).catch((err) => {
console.error(err);
return err;
});
},
getPositionByIdPool: (id) => {
connPool.Request().query(`----second query-----`)
.then((set) => {
console.log(set);
return set;
}).catch((err) => {
console.error(err);
return err;
});
我应该如何调用它们来将第二个查询的结果作为附加属性添加到第一个查询的结果中?回调会让人困惑。看起来两个查询都在同一台服务器上执行,您考虑过使用子查询吗?(). 如果你能用SQL表达你想做的事情,那么仅仅用子查询可能比手动合并记录集更干净,速度更快。如果它们存在于不同的服务器上,则可以使用链接服务器来实现相同的子查询结果 看起来两个查询都在同一台服务器上执行,您考虑过使用子查询吗?(). 如果你能用SQL表达你想做的事情,那么仅仅用子查询可能比手动合并记录集更干净,速度更快。如果它们存在于不同的服务器上,则可以使用链接服务器来实现相同的子查询结果
var sqlConfig = {
server: 'IP',
database: 'db',
user: 'sweeper',
password: 'pass'
}
const connPool = new mssql.ConnectionPool(sqlConfig, err => {
console.error(err);
});
var query = {
getAllUpdatedPool: () => {
connPool.Request().query(`----first query ----`)
.then((set) => {
console.log(set);
return set;
}).catch((err) => {
console.error(err);
return err;
});
},
getPositionByIdPool: (id) => {
connPool.Request().query(`----second query-----`)
.then((set) => {
console.log(set);
return set;
}).catch((err) => {
console.error(err);
return err;
});