2015-12-16 122 views
0

有人可以幫助我對返回的查詢執行此查詢嗎?在每次迭代中運行查詢

我希望查詢通過前面的查詢結果迭代,看是否有優惠券已被使用

這是查詢代碼:

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) 
    }) 
+0

你能澄清一下問題是什麼 - 返回什麼?試圖展示的代碼是什麼?你在代碼中遇到的問題在哪裏? –

+0

'['(1,2,3,4)]' - >'[((1,2,3,4)]' – Kenney

+0

主要查詢是獲取本例預訂給定月份的物品列表。然後,我需要遍歷結果並用第二個查詢檢查是否是每個項目上使用的憑證。兩個查詢分別工作正常,我想知道最好的方法來作爲第二個查詢結果在foreach循環中構建的對象。因爲我不能只是去item.subvalue = rows2 –

回答

0

所以我在做這個結束。使用multiple語句,其中第二個查詢返回查詢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) 
    });