안녕하세요 질문 있는데 알려주실수 있나요? 0 1 412

by 권희성 [2020.11.25 23:16:03]


안녕하세요 혼자 공부하다가 모르는게 생겼는데 여쭤볼 곳이 없어 여기에 여쭤봅니다 ㅠ

오라클 scott계정의 emp, dept 테이블을 이용한  equi join에 outer join 문제인데요

문제 : 모든 사원명(ename)과 담당 매니저 명(ename) 검색, 단 매니저가 없는 사원도 검색되어야 함!

답은 SELECT M.ENAME 사원명, M.ENAME 매니저명
FROM EMP E, EMP M
WHERE E.MGR=M.EMPNO(+);

근데 헷갈리는 것은 empno는 null값이 없고, mgr엔 king이란 사람이 mgr에서 null값을 가집니다

제가 배우기론 outer join에서 (+)사용시 붙이는 위치가 null있어서 부족한 테이블쪽에 붙이는걸로 배웠는데

이 논리대로면 mgr에 null이 있으므로 위에 조건문 부분이 where e.mgr(+) = m.empno; 로 되야하는거 아닌가요?

위의 답대로하면 매니저 없는 king도 같이 출력되는데 제가 생각한대로 바꿔서 출력하니  king이 안뜨더라구요 왜 null있는쪽이 아닌곳에 (+)인건지 자세히 설명좀 부탁드려도 될까요?

 

by 마농 [2020.11.26 08:33:22]

원본에 null 이 있는 쪽에 붙이는게 아닙니다.
결과에 null 이 나오는 쪽에 붙이는 것입니다.
null 로 판단하면 오히려 헷갈릴 듯 합니다.
전체 데이타가 나와야 하는 쪽의 반대편에 붙인다고 생각하세요.
사원은 전체가 다 나와야 하고, 매니저는 나올 수도 있고 안나올 수도 있고.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입