--outer join 배우는날 /엑셀에서 vlookup 사용해서 값 가져오는거랑 동일
--내가 찾으려고 하는 값이 존재하지않으면 보여주지않는다. 왼쪽 정보를 기준으로 정보를 가져온다. 
--값이 존재하지 않더라도 행의수는 살아잇음.  기준 테이블이 어디에 있는지에 따라 LEFT/RIGHTJOIN으로 나뉜다. 

--<ANSI JOIN 방식>
/* SELECT 필드명
FROM 테이블명1 LEFT/RIGHT OUTER JOIN 테이블명2
    ON 테이블명1.필드명1 = 테이블명2.필드명2
WHERE 조건식
*/

SELECT *
 FROM EMPLOYEES left outer join departments
 on employees.department_id = departments.department_id
 ;
SELECT *
 FROM EMPLOYEES right outer join departments
 on employees.department_id = departments.department_id
 ;
SELECT *
 FROM departments left outer join employees
 on employees.department_id = departments.department_id
 ;
--outer join은 leftjoin 하나만 있는것으로 알고 기준테이블을 뭘로할지만 명확하게 알고있다면 한가지로만으로도 사용할수 있겠다. 

--<ORACLE JOIN 방식>  >> join사인, 표시를 해줘야함. 
SELECT *
 FROM employees, departments
 WHERE employees.department_id = departments.department_id(+)  --기준테이블 반대쪽에 조인사인을 주면, 반대테이블이 기준이 되고, 이 기준으로 left조인 된다고 생각.
 --이경우 employees.department_id 기준으로 departments.department_id를 가져와서 조인해준거임
 ;
 
 
 SELECT *
 FROM employees, departments
 WHERE employees.department_id(+) = departments.department_id
 --이경우 departments를 기준테이블로 하고싶어서 employeedp (+)조인 사인을 줌.
 ;
 
 --각각 테이블에 존재하지않는 값을 모두 출력하고 싶을때! > 양쪽에 조인사인(+)을 주는게 아니다! 
 --이때는 ANSI표준 방식인 FULL OUTER JOIN을 사용하면 된다.
 SELECT *
 FROM employees FULL OUTER JOIN departments
 ON employees.department_id = departments.department_id
 --이경우 departments를 기준테이블로 하고싶어서 employeedp (+)조인 사인을 줌.
 ;
 
 

+ Recent posts