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ệnh đề LEFT JOIN trong MySQL

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
0