Background Image

FORUM

2022.08.12 10:22

조건절서브쿼리오류

조회 수 141 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
 Linux 64bit 등
CUBRID Ver.
11.2
CUBRID TOOL Ver.
sqlgate
응용 환경(API)
 


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

select *
from cg_reg_info t1 left outer join cg_ers_his t2
                                        on t1.lnd_r  = t2.lnd_r
                                       and t1.lnd_no = t2.lnd_no
                                       and t1.app_yr = t2.app_yr
                                       and t1.app_no = t2.app_no
                                       and t1.reg_no = t2.reg_no
                                       and t2.ser_no  =  (select max(ser_no) from cg_ers_his 
                                                     where lnd_r = t1.lnd_r and lnd_no = t1.lnd_no
                                                       and app_yr= t1.app_yr and app_no = t1.app_no
                                                       and reg_no = t1.reg_no 
                                                       and reg_dt = (select max(reg_dt) from cg_ers_his 
                                                                                         where lnd_r = t1.lnd_r and lnd_no = t1.lnd_no
                                                                                       and app_yr= t1.app_yr and app_no = t1.app_no
                                                                                       and reg_no = t1.reg_no)
                                                             )
WHERE t1.app_yr = '2022' AND t1.app_no = '50001'  

 

-----------------------------------------------------------------------------------------------------------------------------------

에러

Cannot use a subquery in join condition clause. 

이 부분 지우면 제대로 실행

and t2.ser_no  =  (select max(ser_no) from cg_ers_his 
                                                     where lnd_r = t1.lnd_r and lnd_no = t1.lnd_no
                                                       and app_yr= t1.app_yr and app_no = t1.app_no
                                                       and reg_no = t1.reg_no 
                                                       and reg_dt = (select max(reg_dt) from cg_ers_his 
                                                                                         where lnd_r = t1.lnd_r and lnd_no = t1.lnd_no
                                                                                       and app_yr= t1.app_yr and app_no = t1.app_no
                                                                                       and reg_no = t1.reg_no)
                                                             )

 

-----------------------------------------------------------------------------------------------------------------------------------

 

where 절에 서브쿼리가 지원이 안되나요????

 

 

select *
from cg_reg_info t1 left outer join cg_ers_his t2
                                        on t1.lnd_r  = t2.lnd_r
                                       and t1.lnd_no = t2.lnd_no
                                       and t1.app_yr = t2.app_yr
                                       and t1.app_no = t2.app_no
                                       and t1.reg_no = t2.reg_no
                                       and t2.ser_no  IN  (1,2
                                                       
                                                             )
WHERE t1.app_yr = '2022' AND t1.app_no = '50001'

 

--> 제대로 실행

 

select *
from cg_reg_info t1 left outer join cg_ers_his t2
                                        on t1.lnd_r  = t2.lnd_r
                                       and t1.lnd_no = t2.lnd_no
                                       and t1.app_yr = t2.app_yr
                                       and t1.app_no = t2.app_no
                                       and t1.reg_no = t2.reg_no
                                       and t2.ser_no  IN  (select ser_no from cg_ers_his  a
                                                     where a.lnd_r = t1.lnd_r and a.lnd_no = t1.lnd_no
                                                       and a.app_yr= t1.app_yr and a.app_no = t1.app_no
                                                       and a.reg_no = t1.reg_no 
                                                       
                                                             )
WHERE t1.app_yr = '2022' AND t1.app_no = '50001'    

 

--> 에러, Cannot use a subquery in join condition clause.                                                                                         

 

 

 

 

 

  • ?
    권호일 2022.08.16 13:36

    안녕하세요.

    CUBRID 11,2에서는 ON절에서 subquery를 아직 지원하지 않고 있습니다.

    문의 주신 쿼리는 분석함수를 사용하여 cg_ers_his 테이블에서 최대 reg_dt와 ser_no에 해당하는 레코드를 1건만 찾아서 cg_reg_info 테이블과 left outer join 하도록 변경하였습니다.

    아래와 같이 변경이 가능하고, 쿼리성능도 더 빨라 질 것으로 예상 됩니다.

    확인 부탁 드리겠습니다.

    감사합니다.



    select *
    from cg_reg_info t1 left outer join
           ( select t2.*
             from ( select t2.*,
                                  ROW_NUMBER() OVER ( PARTITION BY t2.lnd_r, t2.lnd_no, t2.app_yr, t2.app_no, t2.reg_no ORDER BY t2.reg_dt, t2.ser_no DESC ) AS MAX_NUM
                        from cg_ers_his t2
                        where t2.app_yr = '2022' AND t2.app_no = '50001'
                       ) t2
             where t2.MAX_NUM = 1
            ) t2
          on t1.lnd_r = t2.lnd_r
        and t1.lnd_no = t2.lnd_no
        and t1.app_yr = t2.app_yr
        and t1.app_no = t2.app_no
        and t1.reg_no = t2.reg_no
    WHERE t1.app_yr = '2022' AND t1.app_no = '50001'


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 127
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4476
3683 cubrid manager server의 데이터 형식이 정상적이지 않습니다. 매니저 접속 오류 5 file 골로가는청춘 2022.08.30 162
3682 Create table SQL문 시간이 너무 오래 걸립니다. 2 steve 2022.08.29 77
3681 JAVA 로직 호출방법 가이드 문의 3 준88 2022.08.29 85
3680 Table Drop, truncate 시 시간이 너무 오래 걸립니다. 5 steve 2022.08.29 764
3679 큐브리드 매니저 접속 오류 문의 1 file 골로가는청춘 2022.08.29 130
3678 큐브리드 매니저 클라이언트 연결 오류 문의 3 dus1302 2022.08.29 238
3677 cubrid_statdump 파일 생성 경로 설정 5 persepo0225 2022.08.26 104
3676 CUBRID HA 구성 to-be-active에서 active전환 실패 1 file hsjang 2022.08.25 135
3675 함수 값은 null 체크가 안되나요?? 1 ozro 2022.08.22 60
3674 CUBRID-11.2.0 에서 CUBRID-11.2.1 patch 를 진행하며 ... 1 리들러 2022.08.21 165
» 조건절서브쿼리오류 1 ozro 2022.08.12 141
3672 쿼리 오류 (컬럼 조회 순서에 따라 오류) 7 file ozro 2022.08.11 205
3671 11.2 path 방법 문의 4 리들러 2022.08.09 100
3670 다른 사용자에 생성된 함수 조회 1 ozro 2022.08.05 97
3669 사용자 권한 부여 2 file ozro 2022.08.04 184
3668 리눅스 ODBC 문의 4 내일은없다 2022.08.04 69
3667 큐브리드 마이그레이션 툴 이용중 계속 문제가 발생합니다 6 file wjdrmstn 2022.08.04 276
3666 CUBRID 11.2 쿼리 성능 이슈 13 tree1891 2022.08.02 532
3665 큐브리드 매니저 접속 문제(jdbc 드라이버) 3 file ozro 2022.08.01 230
3664 [mac os] cubrid manager 오류 문의 4 file 망고라떼 2022.08.01 215
Board Pagination Prev 1 ... 12 13 14 15 16 17 18 19 20 21 ... 201 Next
/ 201

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales