×

Làm thế nào để sử dụng LEFT JOIN, RIGHT JOIN, và FULL OUTER JOIN?

Sử dụng LEFT JOIN (LEFT OUTER JOIN)

LEFT JOIN (hay còn gọi là LEFT OUTER JOIN) trả về tất cả các hàng từ bảng bên trái (table1), cùng với các hàng khớp nối từ bảng bên phải (table2). Các hàng từ bảng bên trái không có khớp nối trong bảng bên phải sẽ vẫn được hiển thị, nhưng các cột từ bảng bên phải sẽ có giá trị là NULL cho những hàng này.

Cú pháp:

SELECT columns
FROM table1
LEFT JOIN table2 ON table1.common_field = table2.common_field;

Ví dụ: Giả sử bạn có bảng nhan_vien và bảng phong_ban, và bạn muốn lấy tất cả nhân viên cùng với tên phòng ban của họ, kể cả những nhân viên không thuộc phòng ban nào:

SELECT nhan_vien.ten, phong_ban.ten_phong_ban
FROM nhan_vien
LEFT JOIN phong_ban ON nhan_vien.phong_ban_id = phong_ban.id;

Sử dụng RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT JOIN (hay còn gọi là RIGHT OUTER JOIN) hoạt động ngược lại với LEFT JOIN, trả về tất cả các hàng từ bảng bên phải và các hàng khớp nối từ bảng bên trái. Các hàng từ bảng bên phải không có khớp nối trong bảng bên trái sẽ vẫn được hiển thị, nhưng các cột từ bảng bên trái sẽ có giá trị là NULL cho những hàng này.

Cú pháp:

SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.common_field = table2.common_field;

Sử dụng FULL OUTER JOIN

FULL OUTER JOIN kết hợp tính năng của cả LEFT JOINRIGHT JOIN, trả về tất cả các hàng từ cả hai bảng khi có ít nhất một khớp nối. Nếu không có khớp nối, cả hai bảng đều sẽ có các hàng được hiển thị với giá trị NULL cho các cột không khớp.

Cú pháp: MySQL không hỗ trợ FULL OUTER JOIN một cách trực tiếp, nhưng bạn có thể mô phỏng nó bằng cách kết hợp LEFT JOINRIGHT JOIN với UNION.

Ví dụ mô phỏng FULL OUTER JOIN: Giả sử bạn muốn lấy tất cả nhân viên cùng với tên phòng ban của họ, bao gồm cả những nhân viên không thuộc phòng ban nào và các phòng ban không có nhân viên:

SELECT nhan_vien.ten, phong_ban.ten_phong_ban
FROM nhan_vien
LEFT JOIN phong_ban ON nhan_vien.phong_ban_id = phong_ban.id

UNION

SELECT nhan_vien.ten, phong_ban.ten_phong_ban
FROM nhan_vien
RIGHT JOIN phong_ban ON nhan_vien.phong_ban_id = phong_ban.id;

Trong mỗi trường hợp, việc sử dụng JOIN đúng cách phụ thuộc vào yêu cầu cụ thể của truy vấn dữ liệu và cấu trúc của cơ sở dữ liệu.

Comments