2013-05-08 1 views
1

MSSQL 2005의 JTDS를 사용하여 Java를 사용하여 다음 문을 실행하고 싶습니다.이 방법이 필요합니다. 위치 1-15, 16- 30 등MSSQL - Java/JTDS 및 Join을 사용하는 잘못된 열 이름

SELECT TOP 15 WID,AID,de FROM 
(SELECT WID,AID, de, ROW_NUMBER() OVER (ORDER BY WID ASC) AS r_n_n 
FROM [database].[dbo].[table1], [database].[dbo].[table2] 
WHERE AID=Indicator) x WHERE r_n_n >= 1 

Microsoft SQL Management-Studio에서이 코드를 복사하여 exceute하면 예상되는 결과가 표시됩니다.

 s = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
     rs = s.executeQuery(sql); 

과 함께 Java에서 excecuting 할 때 "잘못된 열 이름 '표시기"라고 표시됩니다. WID 및 AID는 table1의 테이블입니다. de와 Indicator는 테이블 2에서 가져온 것입니다. 자바와 JDTS를 사용하여 두 가지 다른 쿼리를 만들었습니다. 조인을 사용하는 해당 쿼리 만 작동하지 않습니다. 나는 이것이 그와 관련이 있다고 생각하지만, 나는 무엇을 모른다.

누구나 아이디어가 있습니까? 미리 감사드립니다.

편집 : 현재 JTDS 1.2.5를 사용하고 있지만 1.3.0에서도 차이가 나지 않았습니다.

답변

0

IndicatordeTable2입니다. 암시되어 있다고 가정하지 마십시오. 또한 JOIN 절을 사용하고 '구식'암시 적 방식이 아닌 조인을 작성해야합니다.

또한 TOP를 사용하는 경우 ORDER BY를 추가해야합니다. 그렇지 않으면 어떤 15 행을 얻을지 알 수 없습니다. 당신의 도움에 대한

SELECT TOP 15 WID,AID,de FROM 
(
    SELECT t1.WID, t1.AID, t2.de, ROW_NUMBER() OVER (ORDER BY t1.WID ASC) AS r_n_n 
    FROM [database].[dbo].[table1] t1 
    INNER JOIN [database].[dbo].[table2] t2 ON t1.AID = t2.INDICATOR 
) x 
WHERE r_n_n >= 1 
ORDER BY r_n_n 
+0

감사 :이 당신을 도움이되지만 (같은)을 시도한다면

확실하지! 슬프게도 이것은 아무것도 바뀌지 않습니다. 다시 말하지만, 쿼리를 Management-Studio에 복사 할 때 완벽하게 작동하며 java 코드를 통해 쿼리 할 때이 오류가 발생합니다. –

+0

@JohnJohnson 내가 말했듯이 이것이 도움이 될지 확실하지 않았다. SQL에 대한 개선 및 수정입니다. 적어도 당신은 문제가 Java 코드 나 설정의 어딘가에 있는지 확신 할 수 있습니다. Java 코드를 더 많이 넣어 사용자가 확인할 수 있도록해야합니다. –

+1

오류를 발견했습니다. 데이터를받은 후 코드에 실수가있었습니다. 그 결과, 사용이 허용되지 않은 장소에서 '지시계'란을 사용하게되었습니다. 도와 줘서 고마워! –