작성
·
304
·
수정됨
0
선생님 안녕하세요
강의 잘 보고 있습니다
강의 중간(10:20~25초 사이)내용에 대해 확인하고 싶은 부분이 있습니다
수업내용중 아래의 sql로 질의할때
-- 직원 급여의 이력정보를 나타내며, 해당 급여를 가졌던 시점에서의 부서번호도 함께 가져올것.
select *
from hr.emp_salary_hist a
join hr.emp_dept_hist b on a.empno = b.empno;
record 4번 데이터의 deptno 값 30이 출력된다고 하셨습니다만
a.fromdate between b.fromdate and b.todate
위의 between 조건으로 조인해서 sql로 질의했을 때에
출력되는 결과물은
record 3번 데이터 deptno 값 20이 출력되는데,
record 3번의 a.fromdate (1982-01-01)값만이
조인된 b.fromdate(1981-04-01) and b.todate(9999-12-31)의 범위에 해당되어 출력되는 인식인데 (제가 잘못 이해했을 수도 있습니다만... )
어떻게 deptno값 30이 출력되는지가 궁금합니다
답변 1
0
안녕하십니까,
제가 질문을 잘 이해하지 못했습니다.
'어떻게 deptno값 30이 출력되는지가 궁금합니다' 라는 부분이 첫번째 SQL문에서 라는 건가요? 아님 두번째 SQL에서 인건가요?
첫번째 SQL 이라면 EMPNO로 M:M 조인이 되어서 당연히 30이 출력이 됩니다만,,, 조금 더 상세 사항을 기재해 주시겠습니까
감사합니다.
10:28~ 10:31초 사이에서
3번 레코드 급여 시작시점인 1982-01-01은
부서 번호 from~to range(1981-04-01 ~ 9999-12-31) 사이에 있어서 표기를 x가 아니라 o이고
4번레코드가 부서 from ~ to range에 속하지 않아 x입니다. 그런데 영상에서는 반대로 설명 및 표기 되있습니다.
아마 질문자님께서는 이 내용을 답으로 원하신 것 같습니다.
(alias안하면 동명 때문에 어질어질한 것 같습니다 ㅎㅎ)