Background Image

FORUM

2022.08.12 10:22

조건절서브쿼리오류

조회 수 4207 추천 수 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 도구 출시 안내 21 admin 2024.04.23 143862
3748 create table 시 응답이 없습니다. 6 steve 2022.11.22 4399
3747 볼륨 확장 문의드립니다. 3 Ches 2022.11.22 4583
3746 오라클 패키지 마이그레이션 1 은정 2022.11.21 3910
3745 오프라인 상태에서 큐브리드(11.2) 설치 시 필요 라이브러리 파일 관련 문의 드립니다 1 gidoree 2022.11.21 4297
3744 clob 마이그레이션 문의 사항 3 sTricky 2022.11.21 3913
3743 cubrid migration toolkit / CLOB 인코딩 이슈 해결방안 문의 (해결) 2 키롱 2022.11.18 4928
3742 cubrid migration toolkit / Java heap space. Migration is interrupted (해결) 1 키롱 2022.11.18 4768
3741 CUBRID DB Link insert, update, delete 1 리들러 2022.11.17 4564
3740 cubrid migration toolkit / oracle → cubrid / CLOB 의 한글 깨짐 (해결) 3 키롱 2022.11.16 4435
3739 추가문의가 있는 경우, 새 글을 적는게 좋을까요, 기존 글에 댓글 다는게 좋을까요? 2 키롱 2022.11.16 3974
3738 cubrid migration toolkit / oracle → cubrid / oracle의 jdbc 이슈 ( java.lang.RuntimeException: JDBC driver can't be null. ) (해결) 5 키롱 2022.11.15 4598
3737 cubrid 성능 수집 관련... 2 무돌이 2022.11.14 5393
3736 뷰 생성 후 조회하는데 원본 쿼리와 갯수가 다릅니다 1 플레이어블 2022.11.11 3787
3735 clob 이미지 파일로 다운로드 1 토리 2022.11.11 4855
3734 CUBRID Manager(11.0.0.0001) Python Driver 설치 오류 4 metalk2003 2022.11.10 4839
3733 큐브리드 방화벽 관련해서 질문있습니다. 2 사블 2022.11.08 4572
3732 큐브리드 매니저 -> 데이터베이스 복구 오류 문제 문의 3 file propolisCandy 2022.11.07 5203
3731 큐부리드 함수 문의 2 file ozro 2022.11.07 5466
3730 ADO.NET 에서 connection pool 사용 가능한가요? 1 시나브로 2022.11.04 4738
3729 oracle_style_empty_string 설정 클라이언트 단에서 조회 2 hjeong 2022.11.04 4579
Board Pagination Prev 1 ... 21 22 23 24 25 26 27 28 29 30 ... 213 Next
/ 213

Contact Cubrid

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