06/04/2021, 14:50

Right Join trong SQL - Ngôn ngữ truy vấn T-SQL

Chào các bạn, hôm nay mình sẽ tiếp tục nói đến phép Join trong SQL. Ở các bài trước mình đã nói đến Inner Join và Left Join rồi, vậy thì trong bài này mình sẽ nói đến Right Join. 1. Right Join trong SQL Nếu Left Join sẽ lấy tất cả các records ở bảng bên trái thì Right Join sẽ ngược ...

Chào các bạn, hôm nay mình sẽ tiếp tục nói đến phép Join trong SQL. Ở các bài trước mình đã nói đến Inner Join và Left Join rồi, vậy thì trong bài này mình sẽ nói đến Right Join.

1. Right Join trong SQL

Nếu Left Join  sẽ lấy tất cả các records ở bảng bên trái thì Right Join sẽ ngược lại, nó sẽ lấy toàn bộ records ở phía bên phải và hợp với các records ở bảng bên trái theo điều kiện ON, tổng số column trả về chính bằng tổng số column của cả hai bảng. Dữ liệu của các column ở bảng bên trái sẽ phụ thuộc vào điều kiện ON, nếu thỏa điều kiện thì lấy, ngược lại sẽ có giá trị NULL.

Xen hình để hiểu rõ hơn.

sql right join png

2. Ví dụ Right Join trong SQL

Giả sử mình có bảng SINHVIEN và KHOA như sau:

SINHVIEN
MASINHVIEN  |  TENSINHVIEN   |   TUOISINHVIEN  |  MAKHOA
------------+----------------+-----------------+--------
1           |  Cường         |   28            |  1
2           |  Kính          |   26            |  2
3           |  Quyền         |   20            |  1
4           |  Tình          |   25            |  2

KHOA
MAKHOA  |    TENKHOA
--------+-------------------------------
1       |    Công Nghệ Thông Tin
2       |    Toán
3       |    Lịch Sử

Mối liên hệ giữa hai bảng này là khóa ngoại SINHVIEN.MAKHOA trỏ đến khóa chính KHOA.MAKHOA.

Giả sử mình cần hiện thị dánh sách sinh viên của từng khoa, nếu khoa nào không có sinh viên thì vẫn được trả về.

Nhìn vào dữ liệu thì ta thấy khoa Lịch Sử sẽ không có sinh viên nào, nên nếu sử dụng Inner Join hoặc Left Join thì sẽ không nằm trong kết quả trả về, buộc ta phải sử dụng Right Join.

SELECT MASINHVIEN, TENSINHVIEN, TUOISINHVIEN, SV.MAKHOA, TENKHOA
FROM SINHVIEN SV RIGHT JOIN KHOA K ON SV.MAKHOA = K.MAKHOA

Kết quả sẽ trả về như sau:

MASINHVIEN | TENSINHVIEN | TUOISINHVIEN | MAKHOA | TENKHOA
-----------+-------------+--------------+--------+---------
1          |  Cường      |   28         |  1     | Công Nghệ Thông Tin
2          |  Kính       |   26         |  2     | Toán
3          |  Quyền      |   20         |  1     | Công Nghệ Thông Tin
4          |  Tình       |   25         |  2     | Toán
           |             |              |  3     | Lịch Sử

Các column của record thuộc khoa Lịch Sử sẽ bị rỗng vì nó không thỏa điều kiện ở ON, tức là không có sinh viên nào theo học.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0