0

我有一个 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);                       
                    }
                });
            }               
        });

这是我的查询,但由于排除了很多杂乱,我留下了要领。

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

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

我正在努力用异步 jQuery AJAX 的东西做同样的事情。所以如果这是链接,那么解释会很好。

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

4

1 回答 1

1

对我来说,问题似乎是在orderID添加 orderItems 之前发生变化的变量。

我认为如果您将最后一个 for 循环更改为

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);                       
}

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

于 2013-04-09T14:15:44.580 回答