• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

해당 강의 마지막 조인 쿼리...

22.12.31 16:55 작성 23.01.01 19:40 수정 조회수 217

0

저는 다음과 같이 생각을 했는데요,'

 

아무래도 emp e 가 핵심이 되는 중심 테이블이지 않나? 싶어서 우선 emp e 를 기준으로 쿼리를 작성을 했습니다.

그리고 하드하게 dname을 글로 적어주지 않고 deptno가 정해져 있으니 10, 20으로 조인을 했습니다.

 

select e.empno, e.ename , d.dname, e.job, esh.sal, esh.fromdate, esh.todate

from emp e

join dept d

on e.deptno = d.deptno and d.deptno in ('20', '30')

join emp_salary_hist esh

on e.empno = esh.empno;

 

이렇게 해도 문제가 없을까요?

 

답변 1

답변을 작성해보세요.

2

안녕하십니까,

조인은 보통 테이블과 테이블의 연결을 위해 사용됩니다. 따라서 조인 SQL 구문도 연결되는 테이블의 특정 컬럼들을 on 조건으로 나열해 줍니다.

때문에 조인 조건 on 키워드에 d.deptno in ('20', '30') 와 같이 사용은 바람직하지 않습니다.

d.deptno in ('20', '30')과 같이 특정하게 정해진 값으로 filtering을 하려면 where절을 이용하는게 정석입니다.

select e.empno, e.ename , d.dname, e.job, esh.sal, esh.fromdate, esh.todate

from emp e

join dept d

on e.deptno = d.deptno

join emp_salary_hist esh

on e.empno = esh.empno

where d.deptno in ('20', '30')

감사합니다.