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 JOIN
và RIGHT 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 JOIN
và RIGHT 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