Chào mừng bạn đến với Vimentor!

Hỏi đáp
Đăng ký

03. Left JOIN và Right JOIN

Left JOIN trong SQL

Như đã biết trong bài trước left JOIN sẽ trả về tất cả các bản ghi (các hàng) của bảng nằm bên trái phép JOIN và các giá trị trùng khớp của bảng bên phải. Nếu không có dữ liệu trùng khớp giữa hai bảng, khi đó giá trị NULL sẽ được trả về.

Ta xét ví dụ sau:

Giả sử ta có hai bảng dữ liệu "KhachHang" và "DonHang".

Bảng "KhachHang":

ID

TEN

TUOI

TONG_MUA

1

AN

31

1800

2

MAI

22

800

3

VINH

23

900

4

TIEN

24

1400

5

HA

23

1500

Bảng "DonHang":

ID

NGAY

KHACH_ID

SO_LUONG

01

10-09-2017

2

18

02

30-07-2017

2

5

03

13-09-2017

3

34

04

07-09-2017

4

12

Thực hiện JOIN hai bảng với left JOIN:

SELECT ID, TEN, SO_LUONG,NGAY

FROM KhachHang  

LEFT JOIN DonHang 

ON KhachHang.ID = DonHang.KHACH_ID; 

Kết quả thu được sau khi chạy lệnh trên:

ID

TEN

SO_LUONG

NGAY

1

AN

NULL

NULL

2

MAI

18

10-09-2017

2

MAI

5

30-07-2017

3

VINH

34

13-09-2017

4

TIEN

12

07-09-2017

5

HA

NULL

NULL

Bạn có thể thấy ở bảng trên xuất hiện một số giá trị NULL, đó là vì phần không trùng khớp giữa hai bảng (bảng 2 - DonHang chỉ chứa dữ liệu của các khách có ID là 2,3,4 ứng với MAI, VINH và TIEN, không chứa dữ liệu của AN và HA.

Right JOIN trong SQL

Right JOIN trả về tất cả các hàng của bảng nằm bên phải phép JOIN được kết hợp với các hàng trùng khớp của bảng bên trái. Nếu không có cột nào trùng khớp trong bảng bên trái. Kết quả trả về sẽ là giá trị NULL

Xét câu lệnh sau với hai bảng ở trên:

SELECT ID,TEN,SO_LUONG,NGAY

FROM KhachHang 

RIGHT JOIN DonHang 

ON KhachHang.ID = DonHang.KHACH_ID; 

Kết quả sau khi chạy lệnh:

ID

TEN

SO_LUONG

NGAY

2

MAI

18

10-09-2017

2

MAI

5

30-07-2017

3

VINH

34

13-09-2017

4

TIEN

12

07-09-2017

Ở bảng kết quả này, không xuất hiện giá trị NULL vì tất cả các khách hàng có ID 2,3,4 đều xuất hiện ở cả hai bảng KhachHang và DonHang.

** Nếu bạn muốn viết các nội dung đặt biệt thì hãy làm theo hướng dẫn sau

Xem thêm 10 bình luận
Viết blog mới của bạn
Báo lỗi trang
Đang tải