2017-03-22 9 views
0

とサブクエリを選択sqllite私はテーブルからすべてのエントリの数を返すSQLAndoridカウント

UPDATE Flavor a 
SET count = (SELECT COUNT(*) 
FROM recipes c 
WHERE c.flv1name = a.name) 

でこのクエリはflv1nameという名前の列でレシピを求めています。次に、countという名前のカラムのflavorsという2番目のテーブルをflv1nameのエントリの総数で更新します。

Table Flavors 
_id   name   count 
1   Apple  2 
2   Berry  1 
3   Cherry  4 

質問は、どのように私のアンドロイドアプリケーションのデータベースヘルパーにこのステートメントを書くのですか?ここで

は、私は、これはAndroidアプリケーションデータアダプタで動作するためにはおよそmDb.update("UPDATE " + DATABASE_TABLE2 + " a SET count = (SELECT COUNT(*) FROM " + DATABASE_TABLE + " c WHERE c.flv1name = a.name)")

答えて

0

これまで持っているものです。この

mDb.update("UPDATE " + DATABASE_TABLE2 + " SET count = (SELECT COUNT(*) FROM " + DATABASE_TABLE + " WHERE " +DATABASE_TABLE2+ ".flv1name = " +DATABASE_TABLE+".name)"); 
+0

のおかげで、この

mDb.update("UPDATE " + DATABASE_TABLE2 + " a SET count = (SELECT COUNT(*) FROM " + DATABASE_TABLE + " c WHERE c.flv1name = a.name)") 

から

、私は問題がnDb.updateであると思います。コンパイルされたステートメントではなく、別の形式を要求しています。したがって、疑問。私のDBAdapter for Androidにこのステートメントを書く方法。 –

+0

私はいくつかの変更後にコードを実行し、これでエラーが発生します。 エラーコード:1(SQLITE_ERROR) 原因:SQL(クエリ)エラーまたはデータベースがありません。 ( "a"の近く:構文エラー(コード1):コンパイル中にUPDATEフレーバにSET count =(SELECT COUNT(*)FROM recipes c WHERE c.flv1name = a.name)) –

0

エイリアスを除去する必要がどのように

 public Cursor syncflavorcount() { 
      mDb = mDbHelper.getReadableDatabase(); 
      String buildSQL = "UPDATE " + DATABASE_TABLE2 + " a SET count = (SELECT COUNT(*) FROM " + DATABASE_TABLE + " c WHERE c.flv1name = a.name) "; 


    return mDb.rawQuery(buildSQL, null); 
} 
関連する問題