- Giới thiệu SQL
- SQL là gì
- Các khái niệm RDBMS
- Database là gì
- Cú pháp SQL cơ bản
- Kiểu dữ liệu
- Toán tử
- Biểu thức (Expression)
- Lệnh Create Database
- Lệnh Drop Database
- Lệnh Select Database
- Lệnh Rename Database
- Lệnh Create Table
- Lệnh Drop Table
- Lệnh Delete Table
- Lệnh Rename Table
- Lệnh Truncate Table
- Lệnh ALter Table
- Sao chép bảng
- Bảng tạm (Temp Table)
- Truy vấn Update
- Truy vấn Insert
- Truy vấn Select
- Mệnh đề Order By
- Mệnh đề Group By
- Từ khóa Distinct
- Sắp xếp kết quả
- Mệnh đề Where
- Mệnh đề AND & OR
- Mệnh đề WITH
- Mệnh đề Like
- Mệnh đề Top
- Mệnh đề Union
- Giá trị NULL
- Cú pháp Alias
- Chỉ mục (Index)
- Sử dụng View
- Mệnh đề Having
- SQL Transaction
- Toán tử Wildcard
- Truy vấn con
- Sử dụng Sequence
- Xử lý bản sao
- SQL Injection
- Ràng buộc (Constraint)
- Ràng buộc NOT NULL
- Ràng buộc DEFAULT
- Ràng buộc UNIQUE
- Ràng buộc PRIMARY KEY
- Ràng buộc FOREIGN KEY
- Ràng buộc CHECK
- Ràng buộc INDEX
- Sử dụng Join
- Inner Join
- Left Join
- Right Join
- Full Join
- Self Join
- Cartesian Join
- Hàm hữu ích
- Hàm xử lý Date
- Hàm xử lý chuỗi
- Hàm xử lý số
- First Normal Form (1NF)
- Second Normal Form (2NF)
- Third Normal Form (3NF)
- Tuning DB
- Tài liệu SQL tham khảo
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 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 | | 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 FROM SINHVIEN RIGHT JOIN MUONSACH ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID
su_dung_join_trong_sql