2011-08-23 2 views
1

"정적"키/값 쌍을 포함하는 여러 테이블이 있으며, 현재 여러 SQL (MSSQL) 쿼리를 사용하여 가져옵니다. 하나의 SQL 쿼리에서이 모든 데이터를 가져올 수 있으므로 단일 결과 집합의 각 열 키와 열 값을 참조 할 수 있습니까? 따라서 예를 들면 다음과 같습니다.Java에서 단일 SQL 쿼리 및 결과 세트의 관련없는 데이터 테이블을 검색 할 수 있습니까?

TABLE_ONE 
id, my_key_name, my_value_name 

TABLE_TWO 
id, my_other_key_name, my_other_value_name 

키의 열 이름과 값은 각 테이블마다 다릅니다. 기본적으로 여러 통화를 하나로 통합하려고합니다. 이 상황이 여러 개의 Java ResultSet을 가지고 있어야하며 코드에서 결합 만하면됩니다.

+0

당신이 SQL에서 그것을 할 수 있다면, 당신은 SQL과 함께 java에서 할 수 – NimChimpsky

+0

내가 유니온 연산자, http://www.w3schools.com/sql/sql_union.asp 생각합니다. 전문가는 아니지만 재미있는 질문이므로 약간 보았습니다. 그리고 AS 연산자는 열을 같은 이름으로 가져옵니다. –

답변

4

어떻게

SELECT id, my_key_name, my_value_name 
FROM TABLE_ONE 
UNION 
SELECT id, my_other_key_name, my_other_value_name 
FROM TABLE_TWO 

어떻습니까?

은 참조 : UNION

+0

아, 실수로 열 이름이 일치해야한다고 생각했습니다. 흥미롭게도 열은 첫 번째 SELECT 문에서 이름을 가져오고 다른 열은 동일한 수의 열과 일치 유형 만 필요로합니다. 응! –

+0

@NullUserException 아래의 Adam 응답을 보면 결과 집합에서 유니온을 검색하는 방법과 일관성이 있습니까? 또한 UNION ALL ...을 사용해야합니까? 중복 된 값이 재정의되는 것을 원하지 않습니다. –

+0

@Brian'UNION'은 중복을 없애고 모든 것을 원할 경우 UNION ALL이 필요합니다. – NullUserException

1

당신이 (세미콜론 쿼리를 분리하여) 하나 개의 문장에서 그것을 할 수 있을지는 모르겠지만, 당신은 확실히 여러 결과 집합을 반환하는 저장 프로 시저를 만들 수 있습니다.

getResultSet을 호출 한 후 java.sql.Statement의 getMoreResults 메소드를 사용하여 다음 ResultSet으로 이동할 수 있습니다. 현재 ResultSet을 닫으므로 getMoreResults를 호출하고 Statement에서 다음 ResultSet을 가져 오기 전에 첫 번째 ResultSet에서 필요한 데이터를 가져와야합니다.

+0

이 동작은 대부분의 드라이버와 일치합니까? –

+0

다양한 드라이버가 어떻게 처리하는지 잘 모르겠습니다. JDBC를 직접 사용해 본지 얼마되지 않았습니다. 그러나 java.sql.Statement 인터페이스 계약에서 동작을 구현하지 않는 드라이버는 모두 고장난 드라이버입니다. –

관련 문제