在SQLite查询HTML5中循环遍历多个表 - 异步计时

时间:2013-04-09 14:04:14

标签: sql html5 sqlite asynchronous

我有一个SQLite查询来从数据库中的ORDERS表中提取订单:

        qry.executeSql("SELECT o.ID AS orderIDx, o.token AS orderTokenx, r.retailerName AS retailerNamex FROM orders AS o LEFT JOIN retailers AS r ON r.token = o.retailerID  ", [], function(tx, results){
            //query was a success
            var len = results.rows.length;
            for (var i=0; i<len; i++){  
                var orderID = results.rows.item(i).orderIDx;
                var orderToken = results.rows.item(i).orderTokenx;
                var retailerName = results.rows.item(i).retailerNamex;
                //create container for order and populate it with orderItems in the below query                     
                qry.executeSql("SELECT * FROM orderItems WHERE orderID =  '"+orderToken+"' ", [], function(tx1, results1){

                    var len1 = results1.rows.length;
                    for (var i1=0; i1<len1; i1++){          
                        $('.orderItem.'+orderID+' p').append(results1.rows.item(i1).productName);                       
                    }
                });
            }               
        });

这是我的查询,但是有很多杂乱,我离开了必需品。

所以我试图循环遍历订单表并在一个部分中显示订单特定信息,并在其中作为下拉列表我用widh来替换每个订单项。所以在订单循环中我使用该ID来调用orderItems等...但它只是在最后一个容器中附加orderItem查询的结果。

我想这是因为查询是异步的,但我不确定如何在执行订单查询的下一个循环之前弹出orderItem容器:/

我正在努力用Asynchronmous jQuery AJAX做同样的事情..所以如果这是相关联的,那么解释会很棒。

另外,我打算使用JOIN加入外部查询中的order和orerItems表,但是不确定如何循环遍历项目以及1循环中的订单?

1 个答案:

答案 0 :(得分:1)

对我来说问题似乎是orderID变量,它在orderItems被追加之前发生了变化。

我认为如果你将最后的循环改为

会有所帮助
var len1 = results1.rows.length;
var order_id = results1.rows.item(0).orderID;
for (var i1=0; i1<len1; i1++){          
    $('.orderItem.'+order_id+' p').append(results1.rows.item(i1).productName);                       
}

在这种情况下,您将不再使用已更改的变量。