Giới Thiệu Về MySQL LEFT JOIN
MySQL LEFT JOIN là một trong những loại phép nối (join) được sử dụng để kết hợp dữ liệu từ hai hoặc nhiều bảng trong cơ sở dữ liệu. Khác với INNER JOIN, LEFT JOIN sẽ trả về tất cả các bản ghi từ bảng bên trái và các bản ghi tương ứng từ bảng bên phải. Nếu không có bản ghi nào tương ứng ở bảng bên phải, kết quả sẽ vẫn hiển thị tất cả bản ghi từ bảng bên trái, nhưng các trường từ bảng bên phải sẽ được điền bằng giá trị NULL.
Cú Pháp Của LEFT JOIN
Cú pháp chung của LEFT JOIN như sau:
SELECT cột1, cột2, ... FROM bảng1 LEFT JOIN bảng2 ON bảng1.cột_khoá = bảng2.cột_khoá;
Trong đó:
- bảng1: Bảng bên trái trong phép nối.
- bảng2: Bảng bên phải trong phép nối.
- cột_khoá: Cột được sử dụng để xác định mối quan hệ giữa hai bảng.
Ví Dụ Về MySQL LEFT JOIN
Giả sử chúng ta có hai bảng khach_hang và don_hang:
Bảng khach_hang: +----+---------+ | id | ten | +----+---------+ | 1 | An | | 2 | Binh | | 3 | Chi | +----+---------+ Bảng don_hang: +----+--------------+----------+ | id | khach_hang_id| san_pham | +----+--------------+----------+ | 1 | 1 | sách | | 2 | 1 | bút | | 3 | 2 | vở | +----+--------------+----------+
Chúng ta muốn lấy danh sách tất cả khách hàng và đơn hàng của họ. Nếu khách hàng không có đơn hàng, chúng ta vẫn muốn hiển thị khách hàng đó với giá trị NULL cho đơn hàng. Câu truy vấn sẽ như sau:
SELECT khach_hang.id, khach_hang.ten, don_hang.san_pham FROM khach_hang LEFT JOIN don_hang ON khach_hang.id = don_hang.khach_hang_id;
Và kết quả trả về sẽ là:
+----+---------+----------+ | id | ten | san_pham | +----+---------+----------+ | 1 | An | sách | | 1 | An | bút | | 2 | Binh | vở | | 3 | Chi | NULL | +----+---------+----------+
Trong kết quả trên, chúng ta thấy rằng khách hàng 'Chi' không có đơn hàng nào, do đó cột san_pham hiện giá trị NULL.
Kết Luận
MySQL LEFT JOIN là một công cụ mạnh mẽ để truy xuất và kết hợp dữ liệu từ nhiều bảng. Sử dụng LEFT JOIN giúp bạn dễ dàng lấy được tất cả dữ liệu từ một bảng trong khi vẫn có thể lấy các thông tin liên quan từ bảng khác, ngay cả khi không có thông tin tương ứng nào trong bảng đó.