FULL JOIN trong SQL FULL JOIN trong SQL kết hợp kết quả của cả hai loại LEFT và RIGHT JOIN.. Bảng được kết hợp sẽ chứa tất cả bản ghi từ cả hai bảng, và điền vào đó giá trị NULL cho các
Trang 1FULL JOIN trong SQL
FULL JOIN trong SQL kết hợp kết quả của cả hai loại LEFT và RIGHT JOIN
Bảng được kết hợp sẽ chứa tất cả bản ghi từ cả hai bảng, và điền vào đó giá trị NULL cho các giá trị không so khớp nhau
Cú pháp
Cú pháp cơ bản của FULL JOIN trong SQL như sau:
SELECT bang1.cot1, bang2.cot2
FROM bang1
FULL JOIN bang2
ON bang1.field_chung = bang2.field_chung;
Ví d ụ
Giả sử có hai bảng, bảng SINHVIEN có các bản ghi sau:
+ + -+ -+ -+ -+
| ID | TEN | TUOI| KHOAHOC | HOCPHI |
+ + -+ -+ -+ -+
| 1 | Hoang | 21 CNTT | 4000000 |
| 2 | Viet | 19 DTVT | 3000000 |
| 3 | Thanh | 18 KTDN | 4000000 |
| 4 | Nhan | 19 CK | 4500000 |
| 5 | Huong | 20 TCNH | 5000000 |
+ + -+ -+ -+ -+
Bảng MUONSACH có các bản ghi sau:
+ -+ -+ -+ -+
|STT | NGAY | SINHVIEN_ID | SOTIEN |
+ -+ -+ -+ -+
| 102 2009-10-08 00:00:00 3 | 320
| 100 2009-10-08 00:00:00 3 | 250
| 101 2009-11-20 00:00:00 2 | 280
Trang 2| 103 2008-05-20 00:00:00 4 | 290
+ -+ -+ -+ -+
Bây giờ, chúng ta kết hợp hai bảng bởi sử dụng FULL JOIN trong SQL như sau: SQL> SELECT ID, TEN, SOTIEN, NGAY FROM SINHVIEN FULL JOIN MUONSACH ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID; Ví dụ trên sẽ cho kết quả: + -+ -+ -+ -+
| ID | TEN | SOTIEN | NGAY |
+ -+ -+ -+ -+
| 1 | Hoang | NULL | NULL |
| 2 | Viet | 280 2009-11-20 00:00:00 | 3 | Thanh | 320 2009-10-08 00:00:00 | 3 | Thanh | 250 2009-10-08 00:00:00 | 4 | Nhan 290 2008-05-20 00:00:00 | 5 | Huong | NULL | NULL |
| 3 | Thanh | 320 2009-10-08 00:00:00 | 3 | Thanh | 250 2009-10-08 00:00:00 | 2 | Viet | 280 2009-11-20 00:00:00 | 4 | Nhan 290 2008-05-20 00:00:00 + -+ -+ -+ -+
Nếu Database của bạn không hỗ trợ FULL JOIN (chẳng hạn như MySQL), thì bạn có thể sử dụng
mệnh đề UNION ALL để kết hợp hai JOIN như sau:
SQL> SELECT ID, TEN, SOTIEN, NGAY
FROM SINHVIEN
LEFT JOIN MUONSACH
ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID
UNION ALL
SELECT ID, TEN, SOTIEN, NGAY
Trang 3FROM SINHVIEN
RIGHT JOIN MUONSACH
ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID