2015-01-26 5 views
-1

에서 오는 테이블에 데이터를 삽입 내가 여기이 쿼리가 있습니다 다른 테이블

rs = st.executeQuery("SELECT holderName,COUNT(holderName) as total, SUM(is_late) as total_late FROM (SELECT *,timestampdiff(minute, t1.startTime, t.IOTime) as is_late FROM (SELECT holderName, IODate, MIN(IOTime) as IOTime FROM tbl_records where IOStatus='Entry'AND IODate BETWEEN'"+from+"'AND'"+to+"' GROUP BY holderName, IODate) t JOIN tbl_emp t1 ON t.holderName = t1.name HAVING is_late > 0) AS t2 GROUP BY holderName ORDER BY holderName, IODate"); 

이 3 개 값을 반환하고 내가 그것을 다른 테이블에 넣어합니다.

그리고 나는이 하나를 시도 :

st.executeUpdate("insert into tbl_temp values(null,name,total,total_late) SELECT holderName,COUNT(holderName) as total, SUM(is_late) as total_late FROM (SELECT *,timestampdiff(minute, t1.startTime, t.IOTime) as is_late FROM (SELECT holderName, IODate, MIN(IOTime) as IOTime FROM tbl_records where IOStatus='Entry'AND IODate BETWEEN'"+from+"'AND'"+to+"' GROUP BY holderName, IODate) t JOIN tbl_emp t1 ON t.holderName = t1.name HAVING is_late > 0) AS t2 GROUP BY holderName ORDER BY holderName, IODate"); 

을하고 난 삽입을 실행에 오류가있어!

감사합니다.

+0

에서보세요 :처럼 지금은 자리 수있는 하나의 오류는 쿼리 구문에, 당신은 VALUES을 가질 수 없습니다, 그것은해야 자동 증가 – user2634806

+1

희망 당신은 SQL 주입으로부터 보호하고 있습니다. 이것은 익스플로잇에 개방적이다. 또한 오류를 게시하십시오. 내 의혹이 맞다면 자동 문구를 지정할 필요가 없으므로 values ​​문에서'null'을 제거하면됩니다. – Namphibian

+1

어떤 오류가 있습니까? 준비된 진술을 사용해야합니다. 결과 집합에서 데이터를 가져 와서 preparedstatement에 매개 변수로 전달합니다. 이 [링크] (http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html) – TheEYL

답변

0

오류가 발생하는 경우 좋았을 것입니다.

INSERT INTO tbl_temp(name,total,total_late) 
SELECT holderName,COUNT(holderName) as tot... 

가 삽입에 널 (null)가있다 here