18/08/2018, 11:01
Ghép bảng bằng mệnh đề LEFT JOIN trong MySQL
Từ khóa LEFT JOIN trả về tất cả các hàng của bảng bên trái (table1), kết hợp với các hàng trong bảng bên phải (table2). Lưu ý: Kết quả của phía bên phải sẽ là NULL nếu chúng không giao nhau. Cú pháp SELECT * FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name; ...
Từ khóa LEFT JOIN trả về tất cả các hàng của bảng bên trái (table1), kết hợp với các hàng trong bảng bên phải (table2).
Lưu ý: Kết quả của phía bên phải sẽ là NULL nếu chúng không giao nhau.
Cú pháp
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 |
(Bạn có thể bấm vào đây để download câu lệnh tạo 2 bảng như trên)
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 |