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



Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Learning English Everyday