조인하려는 테이블들 사이의 연결 조건이 = (이퀄) 이 아닌경우엔
BETWEEN AND 나 연산자 를 이용하여 Non equi join 을 한다.
예제 :
select e.ename,e.sal, s.grade
from emp e, salgrade s
where e.sal between s.losal and s.hisal;
같은 퀄럼이 있다면 equi join 을 쓰면 되는데 위의 컬럼은 같은 컬럼이 없다.
where 절에 쓰인 조인 문법을 해석해 보자면
e.sal 에 있는 월급이 s.grade 에 있는 s.losal 과 s.hisal 사이에 존재한다!
문제 290 : 직업이 SALESMAN 인 사원들의이름, 월급과 급여 등급(GRADE) 를 출력하시오
select e.ename, e.sal, s.grade
from emp e, salgrade s
where e.sal between s.losal and s.hisal —————→ 조인조건
and e.job = 'SALESMAN'; —————→ 검색조건
문제 293 급여등급, 급여등급별 속한 사원들의 이름을 가로로출력, 가로로출력할때 이름은 abc 순으로
select s.grade, listagg(e.ename,',') within group (order by e.ename )as EMLPOYEE
from emp e, salgrade s
where e.sal between s.losal and s.hisal ———————> non equi join 문법
group by s.grade;
- [ ] 조인문장을 작성할 떄에는 꼭 2개의 테이블만 작성해야하는가?
- 답: 3개든 4개든 얼마든지 여러개의 테이블을 조인해서 각각의 컬럼들을 하나의 결과로 볼 수 있다.
예) DEPT ——————EMP ————————-SALGRADE
연결고리 연결고리
연결고리 = 조인조건
문제 294 : 이름, 월급, 급여등급(grade), 부서위치 (loc) 출력
세개 이상의 테이블을 조인하는법
select e.ename, e.sal, s.grade, d.loc
from emp e, salgrade s, dept d
where e.deptno = d.deptno
and e.sal between s.losal and s.hisal;
문제 295 : 위 문제에서 급여등급이 2등급인 사원들만 출력
select e.ename, e.sal, s.grade, d.loc
from emp e, salgrade s, dept d
where d.deptno = d.deptno ———————→ 조인조건
and e.sal between s.losal and s.hisal ———→조인조건
and s.grade = 2; ————————————> 검색조건
문제 296 : 부서위치가 시카고 이고, 직업이 세일즈맨인사원들 이름, 월급 , 직업, 부서위치 출력
select e.ename, e.sal, e.job, d.loc
from emp e, dept d
where e.deptno = d.deptno —————→조인조건
and d.loc = 'CHICAGO' —————→검색조건
and e.job = 'SALESMAN'; —————>검색조건
'Oracle > SQL' 카테고리의 다른 글
SQL Oracle Join - Self join 자기 자신과 조인 (0) | 2021.11.22 |
---|---|
SQL Oracle Join - Outer join 여러 테이블 조인 (0) | 2021.11.22 |
SQL Oracle Join - Equi join 여러 테이블 조인 (공통컬럼 O) (0) | 2021.11.22 |
SQL fetch first ___ rows only - 출력되는 행 제한시키기 (0) | 2021.11.22 |
SQL ROWNUM - 출력되는 행 제한시키기 (0) | 2021.11.22 |