2017-12-30 62 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 연산자를 사용하는 것으로 나타납니다.

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

마지막 LEFT OUTER

는 가입 즉시 TableExpression을 정의하지 않고 WHERE 절 앞에 : LEFT OUTER JOIN에 오라클 문서는 구문이있는 그것의 올바른 사용법을 보여줍니다. 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 });