Các phép nối JOIN
Các phép nối trong cơ sở dữ liệu
INNER JOIN: Nối trong. Lấy những dữ liệu tồn tại ở cả 2 bảng
LEFT JOIN: Nối Trái, Lấy dữ liệu toàn bộ ở bảng bên phải
RIGHT JOIN: Nối phải. Lấy toàn bộ dữ liệu ở bảng bên phải
FULL JOIN: Lấy toàn bộ dữ liệu có ở 2 bảng
CROSS JOIN: Nối chéo. Nối từng phần tử dữ liệu từ bảng bên trái sang từng phần tử của bảng bên phải
SELF JOIN: Nối đệ quy. Tự nối với chính nó.
INNER JOIN: Nối trong. Lấy những dữ liệu tồn tại ở cả 2 bảng
SELECT
c.id candidate_id,
c.fullname candidate_name,
e.id employee_id,
e.fullname employee_name
FROM
hr.candidates c
INNER JOIN hr.employees e ON e.fullname = c.fullname;
LEFT JOIN: Nối Trái, Lấy dữ liệu toàn bộ ở bảng bên phải

SELECT
c.id candidate_id,
c.fullname candidate_name,
e.id employee_id,
e.fullname employee_name
FROM
hr.candidates c
LEFT JOIN hr.employees e ON e.fullname = c.fullname;
Trường hợp chỉ lấy dữ liệu bảng bên Trái
SELECT
c.id candidate_id,
c.fullname candidate_name,
e.id employee_id,
e.fullname employee_name
FROM
hr.candidates c
LEFT JOIN hr.employees e ON e.fullname = c.fullname
WHERE e.id employee_id is NULL

RIGHT JOIN: Nối phải. Lấy toàn bộ dữ liệu ở bảng bên phải
Ngược lại với Left join
SELECT
c.id candidate_id,
c.fullname candidate_name,
e.id employee_id,
e.fullname employee_name
FROM
hr.candidates c
RIGHT JOIN hr.employees e ON e.fullname = c.fullname

SELECT
c.id candidate_id,
c.fullname candidate_name,
e.id employee_id,
e.fullname employee_name
FROM
hr.candidates c
RIGHT JOIN hr.employees e ON e.fullname = c.fullname
WHERE e.id employee_id is NULL

FULL JOIN: Lấy toàn bộ dữ liệu có ở 2 bảng
SELECT
c.id candidate_id,
c.fullname candidate_name,
e.id employee_id,
e.fullname employee_name
FROM
hr.candidates c
FULL OUTER JOIN hr.employees e ON e.fullname = c.fullname

SELECT
c.id candidate_id,
c.fullname candidate_name,
e.id employee_id,
e.fullname employee_name
FROM
hr.candidates c
FULL OUTER JOIN hr.employees e ON e.fullname = c.fullname
WHERE e.id employee_id is NULL or
c.id candidate_id is NULL

CROSS JOIN: Nối chéo. Nối từng phần tử dữ liệu từ bảng bên trái sang từng phần tử của bảng bên phải

SELF JOIN: Nối đệ quy. Tự nối với chính nó.
SELECT
e.first_name + ‘ ‘ + e.last_name employee,
m.first_name + ‘ ‘ + m.last_name manager
FROM
sales.staffs e
INNER JOIN sales.staffs m ON m.staff_id = e.manager_id
ORDER BY manager;

