2017-03-23 9 views
-2

私はこの文AndroidのSQLエラーコード1に近い「)」

public void syncflavorcount() { 

    mDb.execSQL("UPDATE " +DATABASE_TABLE2+ " SET COUNT = (SELECT SUM(c)" + 
      " FROM ("+ 
      "SELECT COUNT(*) AS c FROM " +DATABASE_TABLE+ " WHERE " +DATABASE_TABLE2+ ".flv1name = " +DATABASE_TABLE2+ ".name "+ 
      " UNION ALL "+ 
      " SELECT COUNT(*) FROM " +DATABASE_TABLE+ " WHERE " +DATABASE_TABLE2+ ".flv2name = " +DATABASE_TABLE2+ ".name "+ 
      " UNION ALL "+ 
      " SELECT COUNT(*) FROM " +DATABASE_TABLE+ " WHERE " +DATABASE_TABLE2+ ".flv3name = " +DATABASE_TABLE2+ ".name)"); 
} 

それは罰金準拠していますが、それを実行したとき、私はこのエラーを取得して、私のAndroidのアプリケーションでこのクエリを記述しようとしています

 Error Code : 1 (SQLITE_ERROR) 
     Caused By : SQL(query) error or missing database. 
     (near ")": syntax error (code 1): , while compiling: UPDATE flavors SET COUNT = (SELECT SUM(c) FROM (SELECT COUNT(*) AS c FROM recipes WHERE flavors.flv1name = flavors.name UNION ALL SELECT COUNT(*) FROM recipes WHERE flavors.flv2name = flavors.name UNION ALL SELECT COUNT(*) FROM recipes WHERE flavors.flv3name = flavors.name)) 

これはなぜわかりません。ステートメントには2つの角括弧しかありません。誰かが私をチェックしてもらえますか?または、私がこの声明を働かせるよう助けてください。

期待される出力は、DATABASETABLE2の列名のカウントがDATABASETABLEの列名flv1name ... flv3nameの数で更新されることです。flv1name ... flv3nameからのエントリはDATABASETABLE2の列nameと同じです。

DATABASETABLE2 

    name other columns  count 
    Apple ...    1 
    Berry ...    3 
    Cherry ...    0 
    ...  ...    ... 
+2

でオープン1用) 'の閉じ括弧が欠落していますCOUNT =( '最後には行方不明です。 – Jens

+0

このエラーに助けてくれてありがとうございましたが、今はもっと複雑に思える別のものがあります。 –

答えて

1

あなたは@Jensあたりのコメントとして、内側のクエリ

の別名が必要な場合があり、あなたもSET COUNT = (

public void syncflavorcount() { 
    mDb.execSQL("UPDATE " +DATABASE_TABLE2+ " SET COUNT = (SELECT SUM(c)" + 
      " FROM ("+ 
      "SELECT COUNT(*) AS c FROM " +DATABASE_TABLE+ " WHERE " +DATABASE_TABLE2+ ".flv1name = " +DATABASE_TABLE2+ ".name "+ 
      " UNION ALL "+ 
      " SELECT COUNT(*) FROM " +DATABASE_TABLE+ " WHERE " +DATABASE_TABLE2+ ".flv2name = " +DATABASE_TABLE2+ ".name "+ 
      " UNION ALL "+ 
      " SELECT COUNT(*) FROM " +DATABASE_TABLE+ " WHERE " +DATABASE_TABLE2+ ".flv3name = " +DATABASE_TABLE2+ ".name) as myTable)"); 
} 
+0

このエラーで助けてくれてありがとうございました。構文エラー(コード1): 'withすべてのFROMはそこにあると私はそれが最初のものであると仮定します。 –

関連する問題