* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Rocky linux 8.10 64bit |
|
CUBRID 11.3 (11.3.1.1142-bee7aa8) |
|
SQLGate For CUBRID 9.19.0.0 |
|
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
기존 CUBRID 9.3 (9.3.6.0002) 버전에서 신규 Linux에 CUBRID 11.3을 설치하고 데이터 unloaddb / loaddb 작업을 통해서 데이터를 이관하였습니다.
이관된 데이터에는 테이블 별로 확인 결과 특이사항은 없었습니다.
그런데
기존 버전에서는 A테이블, B테이블, C테이블에 대해서
A테이블 INNER JOIN B테이블 on A테이블.A컬럼 = B테이블.A컬럼
LEFT OUTER JOIN C테이블 on B테이블.B컬럼 = C테이블.C컬럼이 쿼리가 정상적으로 작동하지만
11버전에서는 에러가 발생합니다.
3개의 테이블에 대한 Join 절이 INNER 와 LEFT OUTER 조인은 혼용으로 사용 불가능 한가요?
발생하는 에러는
Error : [-494] Semantic: before ' B ON A.identifier = B.identifier
LEFT OUTER JOI...'
Outer join query optimization failed. select [B].[class_code], [C].[name], trim(both from [C].[gcode]), case when [C].[useage]<>'Y' then 0 else [B].[useage] end from inner join [itfind.publication_class] [B] left outer join [itfind.publication_code] [C] on [B].[class_code]=[C].[code] where [B].[identifier]= ?:0 group by [B].[class_code], [C].[name], [C].[gcode], [C].[useage], [B].[useage]?193="ko_KR";194="ko_KR";249="Asia/Seoul";user=0|897|3
[CAS INFO-172.16.120.228:30000,4,287519].
* 실제 쿼리 *
SELECT B.class_code AS id ,
C.name AS title ,
TRIM(C.gcode) AS groupCode ,
CASE
WHEN C.useage != 'Y'
THEN 0
ELSE B.useage
END AS aaaa
FROM publication_master A
INNER JOIN publication_class B
ON A.identifier = B.identifier
LEFT OUTER JOIN publication_code C
ON B.class_code = C.code
WHERE 1 =1
AND A.identifier = '02-004-240926-000015'
GROUP BY B.class_code,
C.name,
C.gcode,
C.useage,
B.useage