gpt4 book ai didi

javascript - 如何使用Web sql数据库对两个表进行递归查询?

转载 作者:行者123 更新时间:2023-11-28 10:15:51 25 4
gpt4 key购买 nike

我正在使用 web sql 数据库的 html5 项目。

我有 2 张 table 。

产品表

  • ID
  • 姓名

价格表

  • ID
  • 产品 ID
  • 日期
  • 价格

一个产品可以有多个不同日期的价格。

我尝试过类似的事情:

bd.x.transaction(function (tx) {
tx.executeSql('SELECT * FROM Products WHERE id = ?', intProductId,
function (tx, rs) {
if (rs.rows.length > 0) {
var objProduct = new clsProduct();
objProduct.setId(rs.rows.item(0).id);
objProduct.setName(rs.rows.item(0).name);

// Query Price Start
bd.x.transaction(function (tx) {
tx.executeSql('SELECT * FROM Prices WHERE product_id = ?', intProductId,
function (tx, rs) {
var x = rs.rows.length;
if (x > 0) {
var arrResult = [];
for (var i = 0; i < x; i++) {
arrResult[i] = new clsPrice();
arrResult[i].setId(rs.rows.item(i).id);
arrResult[i].setDate(rs.rows.item(i).date);
arrResult[i].setPrice(rs.rows.item(i).price);
}

// set prices
objProduct.setPrice(arrResult);
}
},
bd.onError
);
});
// Query Price End
}
},
bd.onError
);
});

问题在于 Product 查询在 Price 查询完成之前完成,并且 objProduct.getPrice() 返回未定义。

如果我在价格查询中放置警报,则会找到记录并且可以看到结果。

我该怎么做?

谢谢。

最佳答案

您想要使用复合查询,其中 SQL 类似于:

SELECT * FROM Products WHERE id IN (SELECT * FROM Prices WHERE product_id = ?)

这样你就只执行一个查询;从 SQL 的 Angular 来看,它更好。

关于javascript - 如何使用Web sql数据库对两个表进行递归查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6618346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com