Khái niệm
JOIN liên kết dữ liệu từ 2+ bảng dựa trên cột chung (join key), tạo ra bảng tạm thời mới.
Các loại JOIN chính
1. CROSS JOIN (Tích Descartes)
Mỗi hàng bảng 1 ghép với mỗi hàng bảng 2. Không cần điều kiện.
SELECT tbl_1.id, tbl_2.id FROM tbl_1 CROSS JOIN tbl_2; -- 4x4 = 16 hàng
2. INNER JOIN (Equi Join)
Chỉ trả về hàng có giá trị khớp ở cả hai bảng (cần điều kiện ON).
SELECT tbl_1.id, tbl_2.id FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.name = tbl_2.name; -- 1 hàng (Aarav)
3. LEFT JOIN
Trả về **tất cả hàng bảng trái** + hàng khớp từ bảng phải. Không khớp → NULL ở cột bảng phải.
SELECT tbl_1.id, tbl_2.id FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.name = tbl_2.name; -- 4 hàng: 3 hàng NULL, 1 hàng khớp (Aarav)
4. RIGHT JOIN
Ngược LEFT: tất cả hàng bảng phải + khớp từ bảng trái. Không khớp → NULL ở cột bảng trái.
SELECT tbl_1.id, tbl_2.id FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name; -- 4 hàng: 1 hàng khớp, 3 hàng NULL ở cột tbl_1