- 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
CARTESIAN JOIN hoặc CROSS JOIN trong SQL
CARTESIAN JOIN hoặc CROSS JOIN trong SQL trả về tích Đề-các của các tập hợp bản ghi từ hai hoặc nhiều bảng đã được kết hợp. Vì thế, nó tương đương như một INNER JOIN khi join-condition luôn luôn ước lượng là True hoặc khi join-condition là vắng mặt trong lệnh.
Cú pháp
Cú pháp cơ bản của CARTESIAN JOIN hoặc CROSS JOIN trong SQL như sau:
SELECT bang1.cot1, bang2.cot2... FROM bang1, bang2 [, bang3 ]
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 CARTESIAN JOIN trong SQL như sau:
SQL> SELECT ID, TEN, SOTIEN, NGAY FROM SINHVIEN, MUONSACH;
Ví dụ trên sẽ cho kết quả:
+----+----------+--------+---------------------+ | ID | TEN | SOTIEN | NGAY | +----+----------+--------+---------------------+ | 1 | Hoang | 320 | 2009-10-08 00:00:00 | | 1 | Hoang | 250 | 2009-10-08 00:00:00 | | 1 | Hoang | 280 | 2009-11-20 00:00:00 | | 1 | Hoang | 290 | 2008-05-20 00:00:00 | | 2 | Viet | 320 | 2009-10-08 00:00:00 | | 2 | Viet | 250 | 2009-10-08 00:00:00 | | 2 | Viet | 280 | 2009-11-20 00:00:00 | | 2 | Viet | 290 | 2008-05-20 00:00:00 | | 3 | Thanh | 320 | 2009-10-08 00:00:00 | | 3 | Thanh | 250 | 2009-10-08 00:00:00 | | 3 | Thanh | 280 | 2009-11-20 00:00:00 | | 3 | Thanh | 290 | 2008-05-20 00:00:00 | | 4 | Nhan | 320 | 2009-10-08 00:00:00 | | 4 | Nhan | 250 | 2009-10-08 00:00:00 | | 4 | Nhan | 280 | 2009-11-20 00:00:00 | | 4 | Nhan | 290 | 2008-05-20 00:00:00 | | 5 | Huong | 320 | 2009-10-08 00:00:00 | | 5 | Huong | 250 | 2009-10-08 00:00:00 | | 5 | Huong | 280 | 2009-11-20 00:00:00 | | 5 | Huong | 290 | 2008-05-20 00:00:00 | +----+----------+--------+---------------------+
su_dung_join_trong_sql