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

Posted

技术标签:

【中文标题】在 HTML5 的 SQLite 查询中循环遍历多个表 - 异步计时【英文标题】:Looping through multiple tables in SQLite query for HTML5 - Asynchronous timing 【发布时间】:2013-04-09 14:04:14 【问题描述】:

我有一个 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 个循环中遍历项目以及订单?

【问题讨论】:

【参考方案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);                       

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

【讨论】:

哈,好的,谢谢。我可能把它弄得比它需要的更复杂

以上是关于在 HTML5 的 SQLite 查询中循环遍历多个表 - 异步计时的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历列表以从 SQL 查询创建多个数据帧

有没有更快的方法来遍历 Sqlite 查询中的行?

循环不工作时 SQlite-FMDatabase 查询

遍历来自 Sqlite-query 的行

在 HTML5 和 JavaScript 中循环访问 localStorage

PL/pgSQL 函数 - 遍历特定列并在循环中执行第二个查询