Non equi join 문의
254
작성한 질문수 11
강사님, 안녕하세요!
강의듣다가 헷갈리는 부분이 있어 질문드립니다.
-- 직원정보와 급여등급 정보를 추출.
select a.*, b.grade
from emp a join salgrade b on a.sal between b.losal and b.hisal
여기에서 키 값으로 연결하지 않고 테이블을 연결하는데
-- 직원 급여의 이력정보를 나타내며, 해당 급여를 가졌던 시점에서의 부서번호도 함께 가져올것.
select a.*,b.detpno
from emp_salary_hist a
join emp_dept_hist b on a.empno= b.empno
and a.fromdate between b.fromdate and a.todate
여기에서는 키 값으로 연결한 조인으로 테이블을 연결하는데
정확히 이 둘의 차이점이 궁금합니다!
위에는 non equi조인이라면
아래에는 equi 조인이랑 none equi 조인을 동시에 하는 건가요?
답변 1
0
안녕하십니까,
먼저 조인을 수행하는 조인 key값은 해당 테이블의 어떤 컬럼이든 상관없습니다.
적어주신 두개의 SQL은 모두 조인 key값으로 조인 대상 테이블의 컬럼들을 사용하여 연결하고 있습니다. 다만 이들의 연결을 조인 key값의 equi조건이 아니라 non equi 조건으로 수행합니다.
먼저 아래 SQL은 emp와 salgrade 테이블을 조인으로 연결하는데 조인의 key를 emp의 sal 컬럼과 salgrade의 losal과 hisal 컬럼을 이용하되 조인 조건이 sal 컬럼값이 losal과 hisal 컬럼 값 사이에 있는 데이터만 조인으로 연결하도록 하는 non-equi 조건으로 되어 있습니다.
select a.*, b.grade
from emp a join salgrade b on a.sal between b.losal and b.hisal
두번째 SQL의 경우도 유사합니다. 다만 첫번째 조인 key컬럼은 emp_salary_hist의 empno와 emp_dept_hist의 empno를 equi-join으로 연결합니다. 하지만 두번째 조인 key 컬럼은 emp_salary_hist의 from_date컬럼값이 emp_dept_hist의 fromdate와 todate 사이의 값만 조인으로 연결하고 있기에 전체적으로는 non-equi 조인이 됩니다.
select a.*,b.detpno
from emp_salary_hist a
join emp_dept_hist b on a.empno= b.empno
and a.fromdate between b.fromdate and a.todate
감사합니다.
0
다른 테이블을 조인할 때 키 값으로 기본 키(pk)만 가능한 줄 알았는데
어떤 컬럼도 상관 없었군요!! 이너 조인을 할때 키 값을 기본 키로만 하던데... 정확히 이 둘의 차이점은 무엇인가요?
0
이너 조인을 포함하여 조인 키값은 어떤 컬럼도 가능합니다. 이너 조인시 PK를 많이 사용하는 이유는 대부분의 테이블이 PK와 FK로 연결되어 있기 때문입니다. 하지만 PK-FK관계가 없어도 두 테이블간 연결할 수 있는 컬럼 조건만 있다면 얼마든지 조인 키 컬럼이 될 수 있습니다.
최신버젼 다운로드
0
51
2
'레벨 유지'의 의미에 대한 질문
0
68
2
date_part
0
70
2
lag/lead offset 관련 질문
0
74
2
join 관련 질문 (inner join, left join)
1
113
2
배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?
0
105
2
Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다
0
65
2
rollup시 null값 매출 라벨링
0
68
2
10. 조인 실습 - 02 관련 질문
0
72
1
조인실습03 - join의 pk-fk join
0
120
2
조인실습03 - join의 pk-fk join
0
81
2
(공유)맥, 스키마 import
0
85
2
sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?
0
147
2
1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?
0
141
2
안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.
0
98
1
섹션5 Group by 실습-01 강의 예제 질문
0
129
2
섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문
0
134
2
섹션2 조인 실습 01 강의 질문
0
141
2
lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.
0
137
1
Dbeaver오류
0
647
2
직원 별 가장 높은 매출
0
125
1
강의순서대로 실습코드순알려주세요.
0
144
1
m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?
0
143
1
rollup
0
94
2





