Oracle Various Joins

INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN 등의 조인 활용 (Using INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN)

INNER JOIN

INNER JOIN은 두 테이블 간에 일치하는 레코드만 반환합니다.

SELECT a.column1, b.column2 
FROM table_a a 
INNER JOIN table_b b 
ON a.common_column = b.common_column;

예제:

SELECT employees.first_name, departments.department_name 
FROM employees 
INNER JOIN departments 
ON employees.department_id = departments.department_id;

LEFT JOIN

LEFT JOIN은 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환합니다. 일치하는 레코드가 없는 경우 NULL을 반환합니다.

SELECT a.column1, b.column2 
FROM table_a a 
LEFT JOIN table_b b 
ON a.common_column = b.common_column;

예제:

SELECT employees.first_name, departments.department_name 
FROM employees 
LEFT JOIN departments 
ON employees.department_id = departments.department_id;

RIGHT JOIN

RIGHT JOIN은 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 일치하는 레코드를 반환합니다. 일치하는 레코드가 없는 경우 NULL을 반환합니다.

SELECT a.column1, b.column2 
FROM table_a a 
RIGHT JOIN table_b b 
ON a.common_column = b.common_column;

예제:

SELECT employees.first_name, departments.department_name 
FROM employees 
RIGHT JOIN departments 
ON employees.department_id = departments.department_id;

FULL JOIN

FULL JOIN은 두 테이블의 모든 레코드를 반환하며, 일치하지 않는 레코드는 NULL을 반환합니다.

SELECT a.column1, b.column2 
FROM table_a a 
FULL JOIN table_b b 
ON a.common_column = b.common_column;

예제:

SELECT employees.first_name, departments.department_name 
FROM employees 
FULL JOIN departments 
ON employees.department_id = departments.department_id;

SELF JOIN (Self Join)

SELF JOIN은 동일한 테이블을 조인하여 사용하는 방법입니다.

SELECT a.column1, b.column2 
FROM table_name a 
INNER JOIN table_name b 
ON a.common_column = b.common_column;

예제:

SELECT e1.employee_id AS manager_id, e1.first_name AS manager_name, e2.employee_id AS employee_id, e2.first_name AS employee_name 
FROM employees e1 
INNER JOIN employees e2 
ON e1.employee_id = e2.manager_id;

OUTER APPLY, CROSS APPLY (Using OUTER APPLY and CROSS APPLY)

CROSS APPLY

CROSS APPLY는 왼쪽 테이블의 각 행에 대해 오른쪽 테이블을 평가하며, 오른쪽 테이블의 행과 일치하는 행만 반환합니다. 이는 특히 행 집합을 반환하는 함수와 함께 사용할 때 유용합니다.

SELECT a.column1, b.column2 
FROM table_a a 
CROSS APPLY (SELECT * FROM table_b b WHERE a.common_column = b.common_column) b;

예제:

SELECT d.department_name, e.employee_id, e.first_name 
FROM departments d 
CROSS APPLY (SELECT employee_id, first_name FROM employees e WHERE e.department_id = d.department_id) e;

OUTER APPLY

OUTER APPLY는 왼쪽 테이블의 각 행에 대해 오른쪽 테이블을 평가하며, 오른쪽 테이블에 일치하는 행이 없으면 NULL을 반환합니다.

SELECT a.column1, b.column2 
FROM table_a a 
OUTER APPLY (SELECT * FROM table_b b WHERE a.common_column = b.common_column) b;

예제:

SELECT d.department_name, e.employee_id, e.first_name 
FROM departments d 
OUTER APPLY (SELECT employee_id, first_name FROM employees e WHERE e.department_id = d.department_id) e;

이와 같이 다양한 조인 방법을 통해 여러 테이블에서 데이터를 효과적으로 결합하고 분석할 수 있습니다. 각 조인 방식은 특정 요구에 따라 선택하여 사용합니다. INNER JOIN은 일치하는 데이터만 반환하고, LEFT JOIN과 RIGHT JOIN은 특정 테이블의 모든 데이터를 포함하며, FULL JOIN은 두 테이블의 모든 데이터를 포함합니다. SELF JOIN은 동일한 테이블 내에서 연관된 데이터를 조회하는 데 사용되고, CROSS APPLY와 OUTER APPLY는 특히 테이블 값 함수를 활용할 때 유용합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *