JOIN

2025. 6. 20. 11:47자격증/SQLD - 취득완료

깨딸은 점!!!

 

JOB_HISTORY JH

JOBS J

EMPLOYEES E

 

E를 J랑 하고 E가 또 JH랑 1:1관계를 맺엇다.

 

그런데, JH랑 J랑은 맺을 필요없다.

 

그냥 ------- 한줄로 생각하면된다.

 

이미 J,JH가 E랑 관계를 맺었는데, 또 J랑 JH랑 맺을 필요는 없다..

 

 

또하나, 

 

 

부서는 이미 EMPLYEES랑 1:1관계를 맺었는데, 다시 JOB_HISTORY를 맺으면, 공집합이 나온다.

 

즉, 이미 JOIN관계를 맺고 결과가 나왔는데,  똑같이 E.DEPARTMENT_ID = D.DEPARTMENT_ID 맺었는데,

 

다시 D.DEPARTMENT_ID = J.DEPARTMENT_ID로 맺으면 공집합이 됨

 

그럼 어떻게 해야할까?

 

EPLOYEES로 JOB_HISTORY, JOBS랑 관계를 맺어줘야 한다.

 

SELECT *

FROM EMPLOYEES E, DEPARTMENTS D, LOCATIONS L, COUNTRIES C, REGIONS R, JOBS J, JOB_HISTORY JH

WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID

AND D.LOCATION_ID = L.LOCATION_ID

AND L.COUNTRY_ID = C.COUNTRY_ID

AND C.REGION_ID = R.REGION_ID

AND E.JOB_ID = J.JOB_ID

AND E.EMPLOYEE_ID = JH.EMPLOYEE_ID

AND E.EMPLOYEE_ID = 101

AND TO_CHAR(JH.START_DATE) = '97/09/21';