database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 3471 게시물 읽기
No. 3471
db2 (+)
작성자
초보입니다(kimsh520)
작성일
2017-08-18 10:11
조회수
2,920

안녕하세요

 

select *절 생략..

FROM NIC66B A,

NIC70B B,

NIC01B F,

NIC35B H,

NIC80B I

WHERE A.SSPS_DL_CRT_DT = B.SSPS_DL_CRT_DT(+)

AND A.DL_P_RNMCNO = B.DL_P_RNMCNO(+)

AND A.DL_P_RNMCNO = F.RNMCNO (+)

AND A.DL_P_RNMCNO = H.RNMCNO (+)

AND A.SSPS_DL_CRT_DT = I.SSPS_DL_CRT_DT(+)

AND A.SSPS_DL_ID = I.SSPS_DL_ID(+)

AND A.SSPS_DL_CRT_CCD NOT IN ( 'CTR', 'CAC') ) A

 

이러한 문장을 제가 생각했을때 아래와같이 변환

 

FROM NIC66B A

LEFT OUTER JOIN NIC70B B ON A.SSPS_DL_CRT_DT = B.SSPS_DL_CRT_DT

LEFT OUTER JOIN NIC70B B ON A.DL_P_RNMCNO = B.DL_P_RNMCNO

LEFT OUTER JOIN NIC01B F ON A.DL_P_RNMCNO = F.RNMCNO

LEFT OUTER JOIN NIC35B H ON A.DL_P_RNMCNO = H.RNMCNO

LEFT OUTER JOIN NIC80B I ON A.SSPS_DL_CRT_DT = I.SSPS_DL_CRT_DT

LEFT OUTER JOIN NIC80B I ON A.SSPS_DL_ID = I.SSPS_DL_ID

WHERE A.SSPS_DL_CRT_CCD NOT IN ( 'CTR', 'CAC') ) A;

 

했더니 오류내용 :' B.DL_P_RNMCNO"에 대한 참조가 앰비규어스합니다' 라는 메세지가떠서 아래와같이 다시 변환을해주었는데요

 

FROM NIC66B A

LEFT OUTER JOIN NIC70B B ON A.SSPS_DL_CRT_DT = B.SSPS_DL_CRT_DT AND A.DL_P_RNMCNO = B.DL_P_RNMCNO <- 위와다른점은 AND를 사용하여 변환

LEFT OUTER JOIN NIC01B F ON A.DL_P_RNMCNO = F.RNMCNO

LEFT OUTER JOIN NIC35B H ON A.DL_P_RNMCNO = H.RNMCNO

LEFT OUTER JOIN NIC80B I ON A.SSPS_DL_CRT_DT = I.SSPS_DL_CRT_DT AND A.SSPS_DL_ID = I.SSPS_DL_ID <- 위와다른점은 AND를 사용하여 변환

WHERE A.SSPS_DL_CRT_CCD NOT IN ( 'CTR', 'CAC') ) A;

 

궁금한게있는데요 3번째로 변환작업을하면 동일하게 데이터가 나오는데요 제가생각한 2번째 변환에서 저렇게 쓰면안되는건가요? 그리고 3번째제가 생각한데로 AND를 쓰면 LEFT OUER JOIN 이 AND절에도 동일하게 적용되는건가요?..

 

이 글에 대한 댓글이 총 1건 있습니다.

OUTER JOIN 대상이 같은 테이블끼리는 AND를 쓰시면 됩니다.

정상규(pajama)님이 2017-08-18 11:01에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3474db2툴 [1]
초보입니다
2017-08-28
3074
3473db2오류 [4]
초보입니다
2017-08-24
2720
3472쿼리좀 작성문제입니다.. [7]
초보입니다
2017-08-23
2642
3471db2 (+) [1]
초보입니다
2017-08-18
2920
3470DECFLOAT_FORMAT 에러 [1]
초보입니다
2017-08-16
2979
3469db2쿼리... [11]
초보입니다
2017-08-08
5036
3468CONNECT_BY_ISLEAF [6]
초보입니다
2017-08-03
3206
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.055초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다