Cartesian 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ủa CARTESIAN JOIN hoặc CROSS JOIN

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 |
+----+----------+--------+---------------------+

Bình luận