私はアプリケーションのAndroidにcordova SQLite storage pluginを使用しています。私は2つのテーブルの結果をビューに表示する必要があります。私のテーブルは "投稿"と "メタ"です...SQLite - 新しいitensを結果に追加
私は 'products'(ポストテーブル)を公開でき、価格や色などの情報はメタで保存されます表。問題は、製品からメタデータを表示する必要があるとき、リストが必要で、テーブルメタから情報を取得した後ですが、最初のクエリからメタデータを追加する必要があります。
が実際に
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
データベーススキーマを表示します。なぜあなたは別のメタテーブルを使用していますか? –
@ CL.質問を更新するだけで、データベーススキーマを確認できるようになりました。私は無制限の 'meta_keys'ユーザーが自由に作成できるので、別に使用しています。 –