Mysql 在每次迭代中运行查询
有人能帮我查询返回的查询吗 我希望查询遍历上一个查询的结果,以查看是否使用了凭证 这是查询的代码:Mysql 在每次迭代中运行查询,mysql,node.js,callback,node-mysql,Mysql,Node.js,Callback,Node Mysql,有人能帮我查询返回的查询吗 我希望查询遍历上一个查询的结果,以查看是否使用了凭证 这是查询的代码: db.query('SELECT * FROM Table WHERE ID in ?', [(1,2,3,4)], function(err, rows) { if (err) throw err var items = [] rows.forEach(function(i) { var item = { 'item1': i.it
db.query('SELECT * FROM Table WHERE ID in ?', [(1,2,3,4)],
function(err, rows) {
if (err) throw err
var items = []
rows.forEach(function(i) {
var item = {
'item1': i.item1,
'item2': i.item2,
'item3': i.item3
}
db.query('SELECT * FROM Table2 WHERE ID = ?', [i.ID],
function(err, rows2) {
if (err) throw err
item.subvalue = rows2
})
items.push(item)
})
res.json(items)
})
所以我最终做到了。使用多语句,其中第二个查询返回查询1中的结果所需的所有可能结果。然后我可以遍历其中的结果1和结果2 仍然不确定这是最好的方法,但它是有效的。欢迎提出任何建议
db.query('SELECT 1 WHERE Range ?; SELECT 2 WHERE ID IN (SELECT 1)',
[req.body.hotelid, '2015-11-01', '2015-11-30',
req.body.hotelid, '2015-11-01', '2015-11-30'],
function(err, result) {
if (err) console.log(err)
else
var items = []
result[0].forEach(function(i) {
var giftVoucherUsed = []
var item = {
'ID': i.BookingID,
'BookingDate': i.BookingDate,
'GuestName': 'Guestname'
}
result[1].forEach(function(g){
if(g.BookingID == i.BookingID){
giftVoucherUsed.push(g)
}
})
item['GiftVoucher'] = giftVoucherUsed
items.push(item)
})
res.json(items)
});
你能澄清问题是什么吗?返回什么?代码试图显示什么?您在代码中遇到的问题是什么?
['(1,2,3,4)]
->[(1,2,3,4)]
在这种情况下,主要查询是获取给定月份的预订项目列表。然后,我需要遍历结果,并通过第二次查询检查每个项目上是否使用了凭证。这两个查询分别工作得很好,我想知道在foreach循环中构建的对象上的第二个查询的结果是什么。因为我不能直接进入item.subvalue=rows2什么是[(1,2,3,4)]
?我认为这不正确。顺便说一句,您不能在查询调用中迭代结果,因为它是异步的。您应该使用回调或异步模块。