2014-11-02 3 views
1

Java에 내장 된 SQL을 사용하여 쿼리를 실행하고 있습니다. 내 데이터베이스에 QUERY, G1 및 G2 테이블 세 개가 있습니다. 그들 모두는 (SETID, GENEID)와 동일한 스키마를가집니다.SQL 명령이 제대로 종료되지 않는 이유는 무엇입니까?

다음과 같이 내가 실행하고 쿼리는 다음과 실행을 위해

SELECT q.SETID, COUNT(q.SETID), g1.SETID, COUNT(g1.SETID) 
FROM QUERY AS q 
INNER JOIN G1 AS g1 ON q.GENEID = g1.GENEID 
GROUP BY q.SETID, g1.SETID 

부분 코드 :이 프로그램을 실행할 때

DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 
con = DriverManager.getConnection(url, user, password); 
stmt = con.createStatement(); 
String sql = "SELECT q.SETID, COUNT(q.SETID) AS QSIZE, g1.SETID, COUNT(g1.SETID) AS GSIZE FROM QUERY AS q INNER JOIN G1 AS g1 ON q.GENEID = g1.GENEID GROUP BY q.SETID, g1.SETID"; 
rs = stmt.executeQuery(sql); 
rsmd = rs.getMetaData(); 

, 그것은 다음과 같은 오류가 발생합니다 : ORA-00933 : SQL 명령을 제대로 끝나지 않았다. 누구든지이 오류로 나를 도울 수 있을까?

감사합니다.

+0

그냥 추측 : 때문에 누락 된 세미콜론의 그것입니까? 아마도 아니 겠지만, 나는 단지 확신하고 싶다. – AdamMc331

+1

문을 실행하는 실제 코드를 게시하십시오. – user432

+1

Ubitsoft와 piliapp 모두 괜찮다고 말하면서 우리가 볼 수있는 더 많은 코드를 포장하고 있습니까? – BIU

답변

1

시도 :

  1. 탈출 테이블 이름 QUERY이 - 말
  2. 에 세미콜론을 추가 예를 들어 COUNT(q.SETID) as Q_CNT
  3. 를 - 그것은 예약 된 단어처럼 보이는
  4. 수에 별칭() 열을 추가 @harvey 제안 된 테이블 별칭 제거

SELECT q.SETID, COUNT(q.SETID) as Q_CNT, g1.SETID, COUNT(g1.SETID) as G1_CNT 
FROM `QUERY` AS q 
INNER JOIN G1 AS g1 ON q.GENEID = g1.GENEID 
GROUP BY q.SETID, g1.SETID; 

SELECT QUERY.SETID, COUNT(QUERY.SETID) as Q_CNT, G1.SETID, COUNT(G1.SETID) as G1_CNT 
FROM QUERY 
INNER JOIN G1 ON QUERY.GENEID = G1.GENEID 
GROUP BY QUERY.SETID, G1.SETID; 
+0

잘못된 문자라는 오류가 발생하므로 테이블 이름을 이스케이프 처리 할 수 ​​없습니다. 세미콜론과 별칭도 문제를 해결하지 못했습니다. – Asdeev

+1

ok ... 게시물의 업데이트보기 –

관련 문제