loading

Inner JOIN (Equi join, non equi join)

2014. 5. 11. 15:14
728x90
반응형

* INNER JOIN (내부조인)

조건을 사용하여 두 테이블의 레코드를 결합한다. 

EQUI JOIN, NON EQUI JOIN, NATURAL JOIN 등이 있다



ㅇ EQUI JOIN(등가조인)

foreign 키와 primary 키 값이 equal 일 때 양 쪽 테이블의 값을 가져오는 조인

테이블 이름.컬럼명 형태로 표시

두 테이블을 조인시킬 조인 조건은 where 절에서 

TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME 으로 기술



<Oracle Join 구문>

SQL> select emp.empno, emp.ename, emp.deptno, dept.dname 

     from emp, dept

     where emp.deptno = dept.deptno;


     EMPNO ENAME  DEPTNO DNAME

---------- ---------- ---------- --------------

      7782 CLARK      10 ACCOUNTING

      7839 KING      10 ACCOUNTING

      7934 MILLER      10 ACCOUNTING

      7566 JONES      20 RESEARCH

      7902 FORD      20 RESEARCH

      7876 ADAMS      20 RESEARCH

      7369 SMITH      20 RESEARCH

      7788 SCOTT      20 RESEARCH

      7521 WARD      30 SALES

      7844 TURNER      30 SALES

      7499 ALLEN      30 SALES

      7900 JAMES      30 SALES

      7698 BLAKE      30 SALES

      7654 MARTIN      30 SALES


14 개의 행이 선택되었습니다.



<ANSI SQL Join 구문>

SQL> select emp.empno, emp.ename, emp.deptno, dept.dname

     from emp JOIN dept

     ON (emp.deptno = dept.deptno);


     EMPNO ENAME   DEPTNO DNAME

---------- ---------- ---------- --------------

      7782 CLARK       10 ACCOUNTING

      7839 KING        10 ACCOUNTING

      7934 MILLER       10 ACCOUNTING

      7566 JONES       20 RESEARCH

      7902 FORD        20 RESEARCH

      7876 ADAMS       20 RESEARCH

      7369 SMITH       20 RESEARCH

      7788 SCOTT       20 RESEARCH

      7521 WARD        30 SALES

      7844 TURNER       30 SALES

      7499 ALLEN       30 SALES

      7900 JAMES       30 SALES

      7698 BLAKE       30 SALES

      7654 MARTIN       30 SALES


14 개의 행이 선택되었습니다.




ㅇ NON EQUI JOIN
두 테이블간의 컬럼 값이 일치하지 않을 때 사용하는 조인
WHERE 절에 BETWEEN, <, > 등의 비교연산자를 사용한다. 

SQL> select * from salgrade ;

GRADE LOSAL HISAL

---------- ---------- ----------

1 700 1200

2 1201 1400

3 1401 2000

4 2001 3000

5 3001 9999

 

SQL> select empno, ename, sal, grade

2 from emp, salgrade

3 where sal between losal and hisal   // sal 값을 salgrade테이블의 losal, hisal의 값과 

                                        비교하여 grade표기

 

     EMPNO ENAME     SAL      GRADE

---------- ---------- ---------- ----------

      7369 SMITH     800  1

      7900 JAMES     950  1

      7876 ADAMS    1100  1

      7521 WARD    1250  2

      7654 MARTIN    1250  2

      7934 MILLER    1300  2

      7844 TURNER    1500  3

      7499 ALLEN    1600  3

      7782 CLARK    2450  4

      7698 BLAKE    2850  4

      7566 JONES    2975  4


     EMPNO ENAME     SAL      GRADE

---------- ---------- ---------- ----------

      7788 SCOTT    3000  4

      7902 FORD    3000  4

      7839 KING    5000  5




728x90

또루아빠 SQL(오라클,mysql) , , , ,