<조인 (JOIN) - 자체 조인 (Self Join)>

 

  • employees 테이블에서 직원 각각의 매니저를 찾는다고 가정, 직원의 이름과 매니저의 이름을 출력

 

ex) employee_id 104의 last_name은 Ernst이고 manager_id는 103임

      employee_id 103의 last_name은 Hunold.

      따라서 employees 테이블 내에서 조인을 함.

 

1
2
3
4
5
SELECT e.last_name 직원, e.employee_id 직원번호1,
m.last_name 매니저, e.employee_id 직원번호2
FROM employees e
JOIN employees m
    ON e.manager_id = m.employee_id;
cs

 

 

 

 

 

 

 

'Learning > SQL' 카테고리의 다른 글

조인 (JOIN) - 교차조인  (0) 2020.06.18
조인 (JOIN) - 외부조인  (0) 2020.06.18
조인 (JOIN) - 비 동등조인  (0) 2020.06.17
조인 (JOIN) - 동등조인  (0) 2020.06.17
집계 함수 (그룹 함수)  (0) 2020.06.16

<조인 (JOIN) - 비 동등조인>

 

  • employees 테이블

 

 

  • salarygrade 테이블

 

 

 

 

  • employees 테이블과 salarygrade 테이블을 비 동등 조인하여 employee_id, first_name, salary, grade를 출력

 

1
2
3
4
SELECT employee_id, first_name, salary, grade
FROM employeees
JOIN salarygrade
ON salary BETWEEN losalary AND hisalary;
cs

 

 

 

'Learning > SQL' 카테고리의 다른 글

조인 (JOIN) - 외부조인  (0) 2020.06.18
조인 (JOIN) - 자체 조인 (Self Join)  (0) 2020.06.17
조인 (JOIN) - 동등조인  (0) 2020.06.17
집계 함수 (그룹 함수)  (0) 2020.06.16
DECODE 함수, CASE 함수  (0) 2020.06.16

<조인 (JOIN) - 동등조인>

 

  • 조인 (JOIN): 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법

    • 둘 이상 행들의 공통된 값 기본키 및 외래키 값을 사용하여 조인 (관계없는 두 테이블을 조인할 수는 없음)

    • 두 개의 테이블을 SELECT 문장 안에서 조인하려면 적어도 하나의 컬럼이 그 두 테이블 사이에서 공유 되어야함 

    • 조인 방법: Equi Join(동등 조인), Non-Equi Join(비동등 조인), Self Join(자체 조인), Outer-Join(외부 조인)

 

 

  • 명시적 표현 (JOIN과 ON이용)

1
2
3
4
SELECT table 1.column 1[,table 2.column 2...]
FROM table 1 JOIN table 2
ON table 1.column1=table 2.cloumn2;
[USING (column)]
cs

 

  • 묵시적 표현 (콤마 , 를 이용)

1
2
3
SELECT table 1.column 1[,table 2.column 2...]
FROM table 1table 2
WHERE table 1.column 1 = table 2.column 2;
cs

 

 


 

  • HR 연습계정의 employees, departments 테이블을 조인하기 

1
2
3
4
SELECT e.employee_id, e.department_id, d.department_name
FROM employees  e
JOIN departments d
ON e.department_id = d.department_id;
cs

 

 

 

 


 

  • 내츄럴 조인 (NATURAL JOIN): 동일한 열이 있으면 알아서 JOIN하기 때문에 ON절 생략가능

  • 만약에 동일한 열이 2개 이상 있을때는 JOIN할 수 없음

 

  • 내츄럴 조인을 사용하여 employees 테이블과 jobs 테이블을 조인하고 employee_id, first_name, job_id, job_title 출력

1
2
3
4
SELECT employee_id, first_name,
       job_id, job_title
FROM employees
NATURAL JOIN jobs;
cs

 

 

 

  • 기본 동등조인의 명시적표현 방법을 사용하여 사용하여 employees 테이블과 jobs 테이블을 조인하고 employee_id, first_name, job_id, job_title 출력 (결과는 동일)

1
2
3
4
SELECT e.employee_id, j.job_id, j.job_title
FROM employees e
JOIN jobs j
    ON e.job_id = j.job_id;
cs

 

 


 

  • employees 테이블과 departments 테이블을 조인하여 department_id가 50인 테이블의 employee_id, department_id, department_name을 출력

1
2
3
4
5
SELECT e.employee_id, e.department_id, d.department_name
FROM employees  e
JOIN departments d
ON e.department_id = d.department_id
WHERE d.department_id = 50;
cs

 

 

 


 

 

  • employees, departments, locations 3개의 테이블을 조인하여 employee_id, department_name, city 출력

1
2
3
4
SELECT e.employee_id, d.department_name, lo.city
FROM employees e
JOIN departments d ON e.department_id = d.department_id
JOIN locations lo ON d.location_id = lo.location_id;
cs

 

 

 


 

 

<동등 조인 예제>

 

  • 부서명(department_name), 시티명(city), 국가명(country_name)을 나타내는 테이블 출력. 테이블들은 countries와 departments와 locations을 조인. 단, 시티가 'Seattle' 혹은 'London' 이어야하고 국가명은 앞쪽에 'United'가 들어가야함

1
2
3
4
5
6
7
SELECT d.department_name 부서명, lo.city 도시명,
co.country_name 국가명
FROM departments d
JOIN locations lo ON d.location_id = lo.location_id
JOIN countries co ON co.country_id = lo.country_id
WHERE lo.city IN ('Seattle''London')
AND co.country_name LIKE 'United%';
cs

 

 

 

'Learning > SQL' 카테고리의 다른 글

조인 (JOIN) - 자체 조인 (Self Join)  (0) 2020.06.17
조인 (JOIN) - 비 동등조인  (0) 2020.06.17
집계 함수 (그룹 함수)  (0) 2020.06.16
DECODE 함수, CASE 함수  (0) 2020.06.16
NULL 관련 함수  (0) 2020.06.16

+ Recent posts