- 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
SELF JOIN trong SQL
SELF JOIN trong SQL được sử dụng để kết hợp một bảng với chính nó như khi coi bảng đó là hai bảng, thay tên tạm thời ít nhất một bảng trong lệnh SQL.
Cú pháp
Cú pháp cơ bản của SELF JOIN trong SQL như sau:
SELECT a.ten_cot, b.ten_cot... FROM bang1 a, bang1 b WHERE a.field_chung = b.field_chung;
Ở đây, mệnh đề WHERE có thể là bất kỳ biểu thức nào theo yêu cầu của bạn.
Ví dụ
Giả sử có hai bảng, bảng NHANVIEN có các bản ghi sau:
+----+----------+-----+-----------+----------+ | ID | TEN | TUOI | DIACHI | LUONG | +----+----------+-----+-----------+----------+ | 1 | Hoang | 32 | DongDa | 2000.00 | | 2 | Thanh | 25 | QuangTrung | 1500.00 | | 3 | Viet | 23 | KimLien | 2000.00 | | 4 | Nhan | 25 | BaDinh | 6500.00 | | 5 | Huong | 27 | CauGiay | 8500.00 | | 6 | Long | 22 | TrungKinh | 4500.00 | | 7 | Nam | 24 | GiapBat | 10000.00 | +----+----------+-----+-----------+----------+
Bây giờ, chúng ta kết hợp bảng này với chính nó bởi sử dụng SELF JOIN trong SQL như sau:
SQL> SELECT a.ID, b.NAME, a.LUONG FROM NHANVIEN a, NHANVIEN b WHERE a.LUONG < b.LUONG;
Ví dụ trên sẽ cho kết quả:
+----+----------+---------+ | ID | TEN | LUONG | +----+----------+---------+ | 2 | Hoang | 1500.00 | | 2 | Viet | 1500.00 | | 1 | Nhan | 2000.00 | | 2 | Nhan | 1500.00 | | 3 | Nhan | 2000.00 | | 6 | Nhan | 4500.00 | | 1 | Huong | 2000.00 | | 2 | Huong | 1500.00 | | 3 | Huong | 2000.00 | | 4 | Huong | 6500.00 | | 6 | Huong | 4500.00 | | 1 | Long | 2000.00 | | 2 | Long | 1500.00 | | 3 | Long | 2000.00 | | 1 | Nam | 2000.00 | | 2 | Nam | 1500.00 | | 3 | Nam | 2000.00 | | 4 | Nam | 6500.00 | | 5 | Nam | 8500.00 | | 6 | Nam | 4500.00 | +----+----------+---------+
su_dung_join_trong_sql