2012-10-03 119 views
1

我無法找到一個明確的答案,異步Web SQL真的讓我絆倒。如何使用基於父SELECT查詢的數據執行SELECT查詢?這是我想到的是工作,但一個真正的片段並不:嵌套在Web中的選擇查詢

db.transaction(function(tx){ 
    tx.executeSql('SELECT a, b FROM mytable WHERE c=5', [], function(tx,results) { 
     var i = results.rows.length; 
     while(i--){ 
      var votes = results.rows.item(i).a; 
      var marker = results.rows.item(i).b; 
      tx.executeSql('SELECT a FROM mytable WHERE c=?', [marker], function(tx,aresults) { 
       if(!aresults){ 
        //do something 
       } else { 
        myScore += (votes*100)/aresults.rows.item(0).a; 
       } 
      }(marker)); 
     } 
     nextFunction(); 
    }); 
}, function(){onError}); 
+0

似乎確定,除了最終的結果是不回調。 –

回答

0

試試這個:

function firstQuery(){ 

    db.transaction(function(tx){ 
     tx.executeSql('SELECT a, b FROM mytable WHERE c=5', [], 
     function(tx,results) { 
      var i = results.rows.length; 
      while(i--){ 
       secondQuery(results.rows[i]); 
      }  
     }); 
    }, function(){onError}); 

} 

function secondQuery(responseQuery){ 

    var votes = responseQuery.a; 
    var marker = responseQuery.b; 

     db.transaction(function(tx){ 
     tx.executeSql('SELECT a FROM mytable WHERE c=?', [marker], function(tx,aresults) { 
      if(!aresults){ 
       //do something 
      } else { 
       myScore += (votes*100)/aresults.rows.item(0).a; 
      } 
     }(marker)); 
    }, function(){onError}); 
}