Right Join trong 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 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.
Bài viết này được đăng tại [free tuts .net]
2. Ví dụ Right Join trong SQL
Giả sử mình có bảng SINHVIEN và KHOA như sau:
MASINHVIEN | TENSINHVIEN | TUOISINHVIEN | MAKHOA ------------+----------------+-----------------+-------- 1 | Cường | 28 | 1 2 | Kính | 26 | 2 3 | Quyền | 20 | 1 4 | Tình | 25 | 2
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.
Cùng chuyên mục:
Phiên làm việc là gì trong SQL
Trong bài viết này mình sẽ giải thích phiên làm việc là gì trong SQL…