Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

ODBC Access Driver 사용시에 Inner Join에 대한 "쿼리식의 연산자가 없는 구문 오류입니다." 오류

Access(.mdb)를 사용하기 위해서 ODBC로 등록해서 JDBC로 연결할 때 평소하던 것 처럼 쿼리문을 짰는데 오류가 떨어졌다. 쿼리상으로는 문제가 없는데 Access Driver가 해당 쿼리에 대해서 지원을 하지 않는 것으로 보였다.

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 'b.categoryid=a.categoryid INNER JOIN role AS c ON b.roleid=c.roleid' 쿼리식의 연산자가 없는 구문 오류입니다.

아래와 같은 쿼리이다.

SELECT a.title, b.sid, b.points, b.pattern, b.base, c.rolename
FROM itembank AS b
INNER JOIN category AS a
ON b.categoryid=a.categoryid
INNER JOIN role AS c
ON b.roleid=c.roleid
WHERE a.parent=?

INNER JOIN이 1개만 있을때는 오류가 없는데 INNER JOIN을 2번하면 오류가 나오는데 ODBC 드라이버가 그런건지 몰라도 FROM절에서 INNER JOIN을 제대로 인식하지 못하는 것 같다. 그래서 다음과 같이 괄호로 묶어 주어야 한다.

SELECT a.title, b.sid, b.points, b.pattern, b.base, c.rolename
FROM (itembank AS b
INNER JOIN category AS a
ON b.categoryid=a.categoryid)
INNER JOIN role AS c
ON b.roleid=c.roleid
WHERE a.parent=?

만약 INNER JOIN이 하나 더 붙으면 괄호를 또 감싸주어야 한다.

하튼 왜 디비를 MDB를 쓴다고 결정해놔서 이 고생을... ㅡ..ㅡ
2008/12/13 16:29 2008/12/13 16:29