Khi làm việc với cơ sở dữ liệu, bạn có thể cần lấy dữ liệu từ nhiều bảng khác nhau. Trong SQL, lệnh JOIN cho phép kết hợp dữ liệu từ hai hoặc nhiều bảng dựa trên một điều kiện liên kết cụ thể.
I. Các loại JOIN
Có nhiều loại JOIN khác nhau, mỗi loại phục vụ một mục đích cụ thể:
- INNER JOIN: Chỉ trả về các hàng có giá trị khớp trong cả hai bảng. Đây là loại JOIN phổ biến nhất.
- LEFT JOIN (hoặc LEFT OUTER JOIN): Trả về tất cả các hàng từ bảng bên trái và các hàng khớp từ bảng bên phải. Nếu không có hàng khớp, các cột từ bảng bên phải sẽ có giá trị NULL.
- RIGHT JOIN (hoặc RIGHT OUTER JOIN): Tương tự như LEFT JOIN, nhưng trả về tất cả các hàng từ bảng bên phải và các hàng khớp từ bảng bên trái.
- FULL JOIN (hoặc FULL OUTER JOIN): Trả về tất cả các hàng từ cả hai bảng, kết hợp các hàng khớp và điền NULL cho các cột không khớp.
II. Cú pháp cơ bản của JOIN
Cú pháp chung cho các loại JOIN là:
SELECT column_list
FROM table1
JOIN table2 ON table1.column = table2.column;
- column_list: Danh sách các cột bạn muốn chọn từ các bảng.
- table1, table2: Tên của hai bảng bạn muốn kết hợp.
- ON: Điều kiện xác định cách các bảng được kết hợp.
Trong đó:
1. INNER JOIN
INNER JOIN trả về các bản ghi khi có sự trùng khớp giữa các hàng trong cả hai bảng được tham gia.
Ví dụ giả sử bạn có hai bảng:
Bảng KhachHang
Bảng DonHang
Truy vấn INNER JOIN sẽ như sau:
SELECT KhachHang.TenKH, DonHang.NgayDatHang
FROM KhachHang
INNER JOIN DonHang ON KhachHang.MaKH = DonHang.MaKH;
2. LEFT JOIN
LEFT JOIN trả về tất cả các bản ghi từ bảng bên trái (bảng đầu tiên), cùng với các bản ghi khớp từ bảng bên phải (bảng thứ hai). Nếu không có sự trùng khớp, kết quả từ bảng bên phải sẽ là NULL.
Ví dụ giả sử bạn có hai bảng:
Bảng KhachHang
Bảng DonHang
Truy vấn LEFT JOIN
sẽ như sau:
SELECT KhachHang.TenKH, DonHang.NgayDatHang
FROM KhachHang
LEFT JOIN DonHang ON KhachHang.MaKH = DonHang.MaKH;
3. RIGHT JOIN
RIGHT JOIN
tương tự như LEFT JOIN
, nhưng sẽ trả về tất cả các bản ghi từ bảng bên phải và các bản ghi khớp từ bảng bên trái. Nếu không có sự trùng khớp, kết quả từ bảng bên trái sẽ là NULL
.
Ví dụ giả sử bạn có hai bảng:
Bảng KhachHang
Bảng DonHang
Truy vấn RIGHT JOIN
sẽ như sau:
Kết quả:SELECT KhachHang.TenKH, DonHang.NgayDatHang
FROM KhachHang
RIGHT JOIN DonHang ON KhachHang.MaKH = DonHang.MaKH;
4. FULL OUTER JOIN
FULL OUTER JOIN
trả về tất cả các bản ghi khi có sự trùng khớp trong bất kỳ bảng nào. Nếu không có sự trùng khớp, kết quả sẽ là NULL
từ bảng không có dữ liệu phù hợp.
Ví dụ giả sử bạn có hai bảng:
Bảng KhachHang
Bảng DonHang
Truy vấn FULL OUTER JOIN sẽ như sau:
Kết quả:SELECT KhachHang.TenKH, DonHang.NgayDatHang
FROM KhachHang
FULL OUTER JOIN DonHang ON KhachHang.MaKH = DonHang.MaKH;
Đăng nhận xét