Trong MySQL, JOIN được sử dụng để kết hợp hàng từ hai hoặc nhiều bảng dựa trên một trường liên quan giữa chúng. Có nhiều loại JOIN, nhưng những cái cơ bản và thường được sử dụng nhất bao gồm INNER JOIN, LEFT JOIN (còn gọi là LEFT OUTER JOIN), RIGHT JOIN (còn gọi là RIGHT OUTER JOIN), và FULL JOIN (còn gọi là FULL OUTER JOIN).
INNER JOIN
INNER JOIN trả về các hàng khi có ít nhất một khớp nối trong cả hai bảng.
Cú pháp:
SELECT columns
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
Ví dụ: Giả sử bạn muốn kết hợp thông tin từ bảng nhan_vien và phong_ban dựa trên trường phong_ban_id:
SELECT nhan_vien.ten, phong_ban.ten_phong_ban
FROM nhan_vien
INNER JOIN phong_ban ON nhan_vien.phong_ban_id = phong_ban.id;
LEFT JOIN (LEFT OUTER JOIN)
LEFT JOIN trả về tất cả các hàng từ bảng bên trái (table1) và các hàng khớp nối từ bảng bên phải (table2). Các hàng không khớp từ bảng bên phải sẽ có giá trị NULL.
Cú pháp:
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
RIGHT JOIN (RIGHT OUTER JOIN)
RIGHT 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 không khớp từ bảng bên trái sẽ có giá trị NULL.
Cú pháp:
SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
FULL JOIN (FULL OUTER JOIN)
FULL JOIN trả về tất cả các hàng khi có ít nhất một khớp nối trong một trong hai bảng. Các hàng không khớp nối từ cả hai bảng sẽ được bao gồm trong kết quả, với giá trị NULL ở những cột không có dữ liệu khớp.
Cú pháp:
SELECT columns
FROM table1
FULL OUTER JOIN table2
ON table1.common_field = table2.common_field;
Lưu ý: MySQL không hỗ trợ FULL OUTER JOIN trực tiếp như một phần của cú pháp SQL của mình. Để mô phỏng FULL OUTER JOIN, bạn cần phải kết hợp LEFT JOIN, RIGHT JOIN, và UNION.
Sử dụng JOIN giúp bạn kết hợp dữ liệu từ nhiều bảng, cho phép truy vấn dữ liệu một cách linh hoạt và mạnh mẽ, tạo ra các kết quả phức tạp từ dữ liệu phân tán trong cơ sở dữ liệu của bạn.
Comments