PostgreSQL CROSS JOIN

Hiểu Về PostgreSQL CROSS JOIN

CROSS JOIN trong PostgreSQL là một loại phép kết nối giữa hai bảng mà không có điều kiện kết nối cụ thể. Điều này có nghĩa là nó sẽ tạo ra một sản phẩm Cartesian, kết hợp mỗi hàng của bảng đầu tiên với mỗi hàng của bảng thứ hai. Kết quả là một tập hợp các hàng, trong đó số lượng hàng là tích của số lượng hàng trong hai bảng.

Cú Pháp

Cú pháp để thực hiện CROSS JOIN trong PostgreSQL có thể được viết như sau:

SELECT * 
FROM table1
CROSS JOIN table2;

Hoặc, bạn cũng có thể sử dụng dấu phẩy để ngăn cách các bảng:

SELECT * 
FROM table1, table2;

Ví Dụ

Chuẩn Bị Dữ Liệu

Giả sử bạn có hai bảng: studentscourses.

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE courses (
    id SERIAL PRIMARY KEY,
    title VARCHAR(100)
);

INSERT INTO students (name) VALUES ('Alice'), ('Bob');
INSERT INTO courses (title) VALUES ('Math'), ('Science');

Ví Dụ Về CROSS JOIN

Giờ đây, bạn có thể sử dụng CROSS JOIN để kết hợp các bảng này:

SELECT *
FROM students
CROSS JOIN courses;

Kết quả của truy vấn trên sẽ là:

 id |  name  | id |   title   
----+--------+----+-----------
  1 | Alice  |  1 | Math
  1 | Alice  |  2 | Science
  2 | Bob    |  1 | Math
  2 | Bob    |  2 | Science

Từ kết quả, chúng ta thấy rằng mỗi sinh viên sẽ được kết hợp với mỗi khóa học, tạo ra một tập hợp các sự kết hợp.

Kết Luận

CROSS JOIN là một công cụ mạnh mẽ nhưng có thể gây ra nhiều dữ liệu nếu không sử dụng cẩn thận, vì nó tạo ra sản phẩm Cartesian. Hãy hạn chế sử dụng CROSS JOIN trong trường hợp bạn cần tất cả sự kết hợp giữa hai bảng mà không có điều kiện nào. Đối với các kết nối dựa trên điều kiện, hãy cân nhắc sử dụng INNER JOIN hoặc các loại JOIN khác.