2013-01-08 3 views
2

저는 몇 년 전에 다른 사람이 작성한 Java 프로그램을 리팩토링 중이므로 SQL/데이터베이스에 대해 알아볼 수는 없지만이 쿼리는 아닙니다. (두 개의 쿼리가 따로있을 때 어떤 결과도 반환하지 않음). 더 많은 정보없이 질문하는 것은 짜증나지만, 지금은 그다지 선택의 여지가 없습니다.SQL 내부 조인 쿼리가 결과를 반환하지 않습니다.

"SELECT " + CLMHDR + ".POLBRC, " 
+ CLMHDR + ".POLTYC, " + CLMHDR + ".POLNOC," + CLMHDR + ".CLTKYC, " 
+ POLHDR + ".INCPTP FROM "+ CLMHDR + 
"INNER JOIN " + POLHDR + " ON " + CLMHDR + ".CLTKYC = " + POLHDR+ ".CLTKYP" 
+ " WHERE POLNOC = "+ polnocSearch 
+ " AND POLBRC = '" + polbrcSearch + "'" 
+ " AND POLTYC = '" + poltycSearch + "'" 
+ " AND DATRPC <= " + claimDate 
+ " GROUP BY POLBRC, POLTYC, POLNOC, CLTKYC" 

표 CMLHDR 및 POLHDR는 참조하는 열을 포함 할, 그리고 CLTKYC 및 CLTKYP는 각 테이블의 키입니다. 끔찍한 이름에 대해 유감스럽게 생각합니다. RPG도 마찬가지입니다.

편집 : 어떤 작업을 수행하는 것은 이이 다음에

"SELECT POLBRC, POLTYC, POLNOC, CLTKYC FROM "+ CLMHDR 
+ " WHERE POLNOC = "+ polnocSearch 
+ " AND POLBRC = '" + polbrcSeach + "'" 
+ " AND POLTYC = '" + poltycSearch + "'" 
+ " AND DATRPC <= " + claimDate 
+ " GROUP BY POLBRC, POLTYC, POLNOC, CLTKYC" 

:

"SELECT INCPTP, TRMTHP FROM "+ POLHDR + " WHERE POLNOP = "+ polnocSearch 
+ " AND POLBRP = '"+ polbrcSearch+ "' AND POLTYP = '"+ poltycSearch + "'" 

하지만 난 정말 모든 데이터가 한 번에 반환 할 원합니다.

+3

이 코드는 [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection)에서 열어 보입니다. – Oded

+3

먼저 실제 SQL 문을 인쇄하고 잘못된 것이 있는지 확인하십시오. – Madhivanan

+0

WHERE 절을 좁히는 동안 문을 사용해보십시오. 정말 결과를 반환하지 않을 수도 있습니다. 오류가 발생하지 않으면 결과가 없습니다. 그것이 던지면, 공유 신경? – Jacco

답변

2

, 당신은 문제에있다 group by. INCPTP이어야합니다. MySQL을 제외한 모든 데이터베이스에서 오류가 발생합니다. 이 두 가지를 포함하면 그런데

, 귀하의 질문에 대답하기 쉬울 것 :

채워 값으로 결과 쿼리 문자열을 사용하는 데이터베이스 엔진
+0

아, 그건 덧붙였다. 고마워, 나는 선택한 컬럼 모두를 포함시켜 그룹을 실현하지 못했다. – Carasel

3

은 FROM 절과 INNER JOIN 사이에 누락 공간이 :

FROM "+ CLMHDR + 
"INNER JOIN 

때문이다이 있어야한다 :

inner join 문제 외에도
FROM "+ CLMHDR + 
" INNER JOIN 
+0

불행히도 여전히 작동하지 않지만 문제가 해결 될 것입니다. – Carasel

관련 문제