我在Android应用程序中使用cordova SQLite storage plugin。我需要从2个表中获取结果才能在视图中显示,我的表格是“posts”和“metas”......
所以我可以发布'产品'(帖子表),价格和颜色等信息保存在元数据表中。问题是当我需要从产品中显示metas时,我需要列表并在从表metas获取信息后,但我需要在主要结果中添加metas(来自第一个查询)。
实际上已退回
results.rows.item(i).id
results.rows.item(i).title
results.rows.item(i).date
我希望添加其他类似的项目
results.rows.item(i).id
results.rows.item(i).title
results.rows.item(i).date
results.rows.item(i).price
results.rows.item(i).color
但不知道怎么做,你能帮助我吗?
这是我的职能......
function query( sql, callback ){
db.transaction(function(transaction) {
var executeQuery = sql;
transaction.executeSql(executeQuery, [ ],
function(tx, result) {
//Success
if( typeof( callback ) == 'function' ){
callback( result );
}
},
function(error){
// Error
});
}
}
function get_meta( data, strMetaKey, callback ){
for( i=0; i < data.length; i++ ){
// QUERY
query( /* SQL WHERE id = i.id AND meta_key = strMetaKey*/, function( result ){
// here is my problem, I can't add 'price' to data
data.rows.item( i ).price = result.rows.item(0).meta_value;
});
}
if( typeof( callback ) == 'function' ){
callback( data );
}
}
new_data = '';
// getting products
query( /* my query */, function( result ){
// getting price
get_meta( result, 'price', function( result ){
new_data = result;
});
// getting color
get_meta( result, 'color', function( result ){
new_data = result;
});
});
数据库架构
posts
ID
title
date
type
metas
id
meta_key
meta_value
答案 0 :(得分:1)
要向主表上的查询添加特定元键,您可以使用correlated subqueries查看值:
SELECT ID,
title,
date,
(SELECT meta_value
FROM metas
WHERE id = posts.id
AND meta_key = 'price'
) AS price,
(SELECT meta_value
FROM metas
WHERE id = posts.id
AND meta_key = 'color'
) AS color
FROM posts;