Hệ quản trị CSDL MySQL - LEFT JOIN
Ghép bảng bằng mệnh đề LEFT JOIN
Lệnh Left Join trong SQL trả về tất cả các hàng từ bảng bên trái, ngay cả khi không có kết quả khớp nào trong bảng bên phải. Điều này có nghĩa là nếu mệnh đề ON không khớp với các bản ghi của bảng bên phải. Lệnh Left Join vẫn sẽ trả về một hàng trong kết quả, nhưng với NULL cho mỗi cột của bảng bên phải.
Cú pháp cơ bản của lệnh Left Join trong SQL như sau:
SELECT *
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
Một số ví dụ
Chúng ta có một bảng khachhang (khách hàng) :
ID_khachhang | NAME_khachhang |
---|---|
Kh001 | Khach Hang 001 |
Kh002 | Khach Hang 002 |
Kh003 | Khach Hang 003 |
Kh004 | Khach Hang 004 |
Kh005 | Khach Hang 005 |
Kh006 | Khach Hang 006 |
Kh007 | Khach Hang 007 |
Kh008 | Khach Hang 008 |
Kh009 | Khach Hang 009 |
Và một bảng hoadon (hóa đơn) như sau:
ID_hoadon | ID_khachhang | DATE_hoadon |
---|---|---|
101 | Kh005 | 2015-03-03 |
102 | Kh008 | 2015-07-09 |
103 | Kh003 | 2015-10-12 |
105 | Kh004 | 2016-05-06 |
106 | Kh008 | 2016-08-08 |
Ví dụ
Câu lệnh MySQL dưới đây sẽ trả về danh sách tất cả các khách hàng và những hóa đơn mà họ đã mua.
SELECT khachhang.ID_khachhang, khachhang.NAME_khachhang, hoadon.ID_hoadon, hoadon.DATE_hoadon
FROM khachhang
LEFT JOIN hoadon
ON hoadon.ID_khachhang=khachhang.ID_khachhang
ORDER BY khachhang.ID_khachhang;
Sau khi thực thi, MySQL trả về một bảng kết quả như sau:
ID_khachhang | NAME_khachhang | ID_hoadon | DATE_hoadon |
---|---|---|---|
Kh001 | Khach Hang 001 | NULL | NULL |
Kh002 | Khach Hang 002 | NULL | NULL |
Kh003 | Khach Hang 003 | 103 | 2015-10-12 |
Kh004 | Khach Hang 004 | 105 | 2016-05-06 |
Kh005 | Khach Hang 005 | 101 | 2015-03-03 |
Kh006 | Khach Hang 006 | NULL | NULL |
Kh007 | Khach Hang 007 | NULL | NULL |
Kh008 | Khach Hang 008 | 102 | 2015-07-09 |
Kh008 | Khach Hang 008 | 106 | 2016-08-08 |
Kh009 | Khach Hang 009 | NULL | NULL |