강좌 내용에 대해 질문이 있습니다 0 8 1,253

by 될때까지 [Oracle 기초] [2013.08.21 11:05:23]



강좌 작성일이 너무 오래전이라 이곳에 따로 질문드립니다

http://www.gurubee.net/lecture/1506

위 주소의 강좌를 읽다가 궁금한 것이 생겼는데요,
select 절에 서브쿼리를 사용할 경우 문제점이나 주의해야 할 부분은 그럼
'일치하는 값이 없는 경우 null을 반환'하기 때문에 원하는 조회가 이루어지지 않을 수 있다는 것인가요?
by 압티 [2013.08.21 11:17:29]
select절에 서브쿼리를 사용할 경우 select 안의 결과가.. 2건이상 일경우 오류가 납니다.

'일치하는 값이 없는 경우 null을 반환'하기 때문에 원하는 조회가 이루어지지 않을 수 있다는 것인가요?
-> 아닙니다.!! 

제가 아는부분은 여기까지 ..;;

by 될때까지 [2013.08.21 11:23:36]
압티님 감사합니다
그럼 'NULL값을 반환하는 Outer Join형태의 Scalar Subquery 예 '
에서 부서 40에 해당하는 직원이 없기 때문에 최대 급여가 조회 되지 않는다 라는 부분은 어떻게 이해해야 하나요?
전 단순히 부서 40에 해당하는 직원이 없기 때문에 null 값이 반환되서 원하는 조회 (최대 급여)가 이루어지지 않기 때문에 실제 사용 시엔 이렇게 하지 않도록 주의해야 한다 라고만 이해했었는데...

by 우리집아찌 [2013.08.21 11:43:43]

업무상 급여가 안뜨면 문제있으니 그런식으로 표현하신듯합니다.

만약 조인으로 하면 NULL Data 가 아예 빠지니까요..


by 압티 [2013.08.21 11:39:42]
실제 사용시엔 이렇게 하지 않도록 주의가 아니라...

이렇게 결과가 나오니 사용을 할지 다른방법으로 할지를 선택해라.. 이게 맞는듯.. 

부서에 값이 없어도 나오도록 요구하는 경우도 있고

부서에 값이 없으면 나오지 않도록 요구하는 경우도 있으니..

by 될때까지 [2013.08.21 12:15:59]

우리집아찌님 압티님 감사드립니다!

by 마농 [2013.08.21 12:20:34]

"이럴땐 이렇고 저럴땐 저렇다" 라고 이해하셔야 합니다.
"이게 옳고 저건 그르다" 는 절대 아닙니다.
이런 상황에선 이게 옳을 수 잇으나 상황이 바뀌면 저게 올을 수 있죠.
그때 그때 상황에 따라 어떤게 맞는지를 판단하려면 각각의 특성을 잘 이해하고 있어야 하겠지요.


by 될때까지 [2013.08.21 13:42:55]
감사합니다
머리로는 상황에 따라 다르다라고 배우고 기억해놓고서는 막상 이럴 때는 정답을 찾고 있네요 ^^;
말씀하신대로 명령어 같은 것들의 특성에 대한 이해가 정말 중요한 것 같습니다
어서 조금이라도 더 많이, 조금이라도 더 확실히 이해해야 할텐데 갈 길이 아직 머네요 ㅎㅎ

by 마농 [2013.08.22 10:58:36]
select 절에서 서브쿼리를 사용 할 때 주의해야 할 점이라...흠...
일단 서브쿼리 결과가 단일값이어야만 한다는거...이거는 기본이고...
이거 외에 딱히 주의사항이란게 있나 모르겠네요...
기타 주의점이라면..성능 관점에서 접근해야 할까요?
스칼라서브쿼리는 메인 쿼리의 결과건수만큼 서브쿼리를 반복 수행합니다.
따라서 대용량인 경우 반복 수행에 따른 부하가 예상되구요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입