2017-12-30 40 views
-1

私はまだこれに新しいと、これらの複数のテーブルのクエリを使用して私の初めてです。なぜ私はそのようなエラーがありますか?ここに私のコードは次のとおりです。「WHERE」の近くにあるクエリで構文エラーが発生するのはなぜですか? (複数のテーブル)

String selectQuery = 
      " select *" + 
      " from tableassign left outer join\n" + 
      "   tableacc\n" + 
      "   on tableassign.signeeid = tableacc.userid left outer join\n" + 
      "   tableinfo\n" + 
      "   on tableassign.signeeid = tableinfo.userid left outer join\n" + 
        " WHERE tableassign.signeedepid =?"; 
    Cursor data = db.rawQuery(selectQuery , new String[]{ signeedep }); 

エラー:

android.database.sqlite.SQLiteException: near "WHERE": syntax error (code 1): 
, while compiling: select * from tableassign left outer join tableacc on 
tableassign.signeeid = tableacc.userid left outer join tableinfo on 
tableassign.signeeid = tableinfo.userid left outer join WHERE 
tableassign.signeedepid =? 
+4

最後の「左外部結合」を削除してみてください。 – Zachary

答えて

1

あなたのコピー/貼り付けの問題を持っているようです。削除最後left outer joinwhere前:

String selectQuery = 
     " select *" + 
     " from tableassign left outer join\n" + 
     "   tableacc\n" + 
     "   on tableassign.signeeid = tableacc.userid left outer join\n" + 
     "   tableinfo\n" + 
     "   on tableassign.signeeid = tableinfo.userid\n" + 
       " WHERE tableassign.signeedepid =?"; 
Cursor data = db.rawQuery(selectQuery , new String[]{ signeedep }); 

そして、私は主に読みやすさのために、少し違っそれをフォーマットします:

String selectQuery = 
     " SELECT *\n" + 
     " FROM tableassign\n" + 
     " LEFT JOIN tableacc ON tableassign.signeeid = tableacc.userid\n" + 
     " LEFT JOIN tableinfo ON tableassign.signeeid = tableinfo.userid\n" + 
     " WHERE tableassign.signeedepid =?"; 
Cursor data = db.rawQuery(selectQuery , new String[]{ signeedep }); 
1

私はあなたがクエリを使用している、まさに構造化言語が不明だが、問題はJOIN演算子を使用しているように見えます。 LEFT OUTER JOIN上のOracleドキュメントは構文がある中で、それの正しい使用方法を示しています

TableExpression LEFT [ OUTER ] JOIN TableExpression 
{ 
    ON booleanExpression | 
    USING clause 
} 

最終LEFT OUTER JOINをすぐにTableExpressionを定義せずにWHERE句に先行します。 LEFT OUTER JOIN句を削除してエラーを削除します。

String selectQuery = 
      " select *" + 
      " from tableassign left outer join\n" + 
      "   tableacc\n" + 
      "   on tableassign.signeeid = tableacc.userid left outer join\n" + 
      "   tableinfo\n" + 
      "   on tableassign.signeeid = tableinfo.userid" + 
        " WHERE tableassign.signeedepid =?"; 
    Cursor data = db.rawQuery(selectQuery , new String[]{ signeedep }); 
関連する問題