[SQL Server] Right Join trong SQL

Right Join trong SQL

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áitheo đ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.

2. Ví dụ Right Join trong SQL

Giả sử mình có bảng SINHVIEN và KHOA như sau:
SINHVIEN
1
2
3
4
5
6
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
1
2
3
4
5
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.
1
2
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:
1
2
3
4
5
6
7
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.

Nhận xét

Bài đăng phổ biến từ blog này

[SQL Server] Toán tử LIKE và NOT LIKE trong SQL

[Javascript] Object constructor

[SQL Server] Lọc dữ liệu trùng với DISTINCT trong SQL