在 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 查询中循环遍历多个表 - 异步计时的主要内容,如果未能解决你的问题,请参考以下文章