동일한 데이터베이스에서 작성한 다중 테이블을 참조할 수 있습니다. 두 개의 테이블에서 데이터를 조인하려면 SELECT문에서 FROM절을 사용하십시오.
다음 예에서는 USERTABLE1 및 USERTABLE2라는 두 개의 데이터베이스 테이블이 있다고 가정합니다. 테이블 둘다에 두 개의 char(6) 데이터 유형 열(또는 이와 동등한 것)이 있습니다.
USERTABLE1은 두 개의 행을 포함합니다.
Column1 | Column2 | |
---|---|---|
행 1 | value1 | value2 |
행 2 | value3 | value4 |
USERTABLE2는 두 개의 행을 포함합니다.
Column3 | Column4 | |
---|---|---|
행 1 | value5 | value6 |
행 2 | value7 | value8 |
단일 SELECT 함수에서 참조된 모든 테이블은 동일한 데이터베이스에 있어야 합니다. 데이터베이스는 디폴트(노드의 "데이터 소스" 등록 정보에 지정한) 또는 다른 데이터베이스(SELECT 함수의 FROM 절에 지정한)일 수 있습니다.
테이블을 정의한 데이터베이스를 식별하도록 사용 중인 Compute, Filter 또는 Database 노드를 구성하십시오. 예를 들면, 디폴트 데이터베이스를 사용 중인 경우, 노드를 마우스 오른쪽 단추로 누르고 ESQL 열기를 선택한 후 이 노드의 모듈에서 다음과 같은 ESQL문을 코딩하십시오.
SET OutputRoot.XML.Test.Result[] = (SELECT A.Column1 AS FirstColumn, A.Column2 AS SecondColumn, B.Column3 AS ThirdColumn, B.Column4 AS FourthColumn FROM Database.USERTABLE1 AS A, Database.USERTABLE2 AS B WHERE A.Column1 = 'value1' AND B.Column4 = 'value8' );
출력 메시지 컨텐츠는 다음과 같습니다.
<Test> <Result> <FirstColumn>value1</FirstColumn> <SecondColumn>value2</SecondColumn> <ThirdColumn>value7</ThirdColumn> <FourthColumn>value8</FourthColumn> </Result> </Test>
위의 예는 두 데이터베이스 테이블에서 데이터에 액세스하는 방법을 표시합니다. 다중 데이터베이스 테이블에 액세스할 수 있도록 보다 복잡한 FROM 절을 코딩할 수 있습니다(모든 테이블이 동일한 데이터베이스에 있어야 하더라도). 하나 이상의 메시지 트리를 참조할 수도 있고, SELECT를 사용하여 테이블과 테이블, 메시지와 메시지, 테이블과 메시지를 결합시킬 수 있습니다. XML 메시지 및 데이터베이스 테이블에서 데이터 조인은 데이터베이스 테이블에서 메시지 데이터를 데이터와 병합하는 방법에 대한 예를 제공합니다.
(노드의 데이터 소스 등록 정보로 지정됨).
WHERE 절의 열 ID에 ESQL 함수 또는 프로시저를 지정하는 경우, ESQL이 아닌 데이터베이스 조회의 일부로 처리됩니다.
다음의 예를 고려해 보십시오.
SET OutputRoot.XML.Test.Result = THE(SELECT ITEM T.Column1 FROM Database.USERTABLE1 AS T WHERE UPPER(T.Column2) = 'VALUE2');
대문자로 변환된 Column2의 값이 VALUE2인 행을 리턴하려고 시도합니다. 그러나 데이터베이스 관리자만이 주어진 행에 대해 T.Column2 값을 판별할 수 있으므로 데이터베이스 WHERE절이 메시지 플로우에 리턴된 행을 판별하기 때문에 데이터베이스 쿼리가 발행되기 전에 ESQL에 의해 처리될 수 없습니다.
따라서 UPPER는 처리의 일부로 포함되도록 데이터베이스 관리자로 전달됩니다. 그러나 데이터베이스 관리자가 SELECT문 내의 토큰을 처리할 수 없는 경우 오류가 리턴됩니다.