Hướng dẫn mysql join 3 tables - mysql tham gia 3 bảng

Hướng dẫn mysql join 3 tables - mysql tham gia 3 bảng

Khi bạn làm việc với cơ sở dữ liệu của mình, bạn có thể cần phải kết hợp dữ liệu từ một vài bảng khác nhau. Bài viết này sẽ chỉ cho bạn cách.

Tôi đã viết về SQL tham gia ở đây và ở đây, nhưng chúng ta hãy dành một chút thời gian để xem xét cách tham gia hoạt động đầu tiên và đặc biệt là cú pháp cụ thể cho MySQL.

Tuyên bố tham gia SQL

Tham gia là một tuyên bố cho phép bạn kết hợp hai bảng, phù hợp với các hàng có liên quan với nhau và chỉ giữ các hàng có thể phù hợp, không giữ các hàng không ghép đôi.

SELECT * FROM table1 
  INNER JOIN table2
  ON table1.id = table2.id;
Generic Nội tâm Nước nối giữa hai bảng

Câu lệnh SELECT ... FROM chỉ ra đó là bảng đầu tiên, sau đó tên bảng thứ hai được viết ngay sau các từ khóa INNER JOIN.

Làm thế nào hai bảng nên được tham gia được viết trong tuyên bố ON. Trong trường hợp này, hai bảng được nối bằng mối quan hệ table1.id = table2.id.

Có thể sử dụng nhiều câu lệnh tham gia cùng nhau để tham gia nhiều hơn một bảng cùng một lúc.

SELECT *
  FROM table1
  INNER JOIN table2
  ON table1.id = table2.id
  INNER JOIN table3
  ON table2.id = table3.id;
Genereric Nội tâm Câu lệnh giữa ba bảng

Để làm điều đó, bạn thêm một câu lệnh INNER JOIN thứ hai và câu lệnh ON thứ hai để chỉ ra bảng thứ ba và mối quan hệ thứ hai.

Hãy nói một chút về các mối quan hệ bạn có thể có giữa các bảng và lý do tại sao bạn có thể muốn tham gia ba bảng với nhau.

Mối quan hệ giữa các bảng trong SQL

Khi bạn có các bảng có liên quan với nhau, các mối quan hệ của họ có thể là một trong những loại khác nhau.

one-to-many

Trong một loại mối quan hệ một-nhiều, một hàng của bảng thứ nhất có thể liên quan đến nhiều hàng của bảng thứ hai.

Trong một cơ sở dữ liệu quan hệ, điều này có thể được triển khai với bảng thứ hai có cột first_table_id cho biết hàng nào của bảng đầu tiên có liên quan.

Hướng dẫn mysql join 3 tables - mysql tham gia 3 bảng

many-to-one

Trong một loại mối quan hệ nhiều-một, một hàng của bảng thứ nhất có thể liên quan đến một hàng của bảng thứ hai và một hàng của bảng thứ hai có thể liên quan đến nhiều hàng của bảng thứ nhất.

Trong một cơ sở dữ liệu quan hệ, điều này có thể được triển khai với bảng đầu tiên có cột

SELECT *
  FROM table1
  INNER JOIN table2
  ON table1.id = table2.id
  INNER JOIN table3
  ON table2.id = table3.id;
0 cho biết hàng nào của bảng thứ hai có liên quan.

Hướng dẫn mysql join 3 tables - mysql tham gia 3 bảng
Many-to-one

many-to-many

Trong trường hợp này, nhiều hàng có liên quan đến nhiều hàng.

Hướng dẫn mysql join 3 tables - mysql tham gia 3 bảng
Many-to-many

Kiểu mối quan hệ này không thể được thể hiện như với các bảng SQL-bạn cần thêm một bảng khớp nối giữa hai bảng để chỉ có các mối quan hệ nhiều đến một và một đến nhiều giữa các bảng.

Mỗi hàng của bảng ở giữa đại diện cho một mối quan hệ giữa các hàng của bảng bên trái và các hàng của bảng bên phải.

Hướng dẫn mysql join 3 tables - mysql tham gia 3 bảng

Trong thực tế trong MySQL, bảng giữa đó sẽ có một cột cho first_table_id và một cột cho

SELECT *
  FROM table1
  INNER JOIN table2
  ON table1.id = table2.id
  INNER JOIN table3
  ON table2.id = table3.id;
0, với mỗi kết hợp là duy nhất.

Tham gia các bảng SQL trong thực tế

Hãy tưởng tượng chúng tôi có cơ sở dữ liệu của một tổ chức, nơi chúng tôi có một bảng với các nhóm (tên của họ và thông tin nhận dạng khác) và một bảng với các dự án (tên, tiến trình, v.v.).

Tôiteam_namechuyên môn
1 Ném chuốiChuối
2 Gỗ gỗGặm gỗ
3 Những con voi màu hồngDậm chân trên mặt đất
4 Khoai tây lông tơLàm việc và ngủ
Tôiproject_namechuyên môn
1 Ném chuốiChuối
2 Gỗ gỗGặm gỗ
3 Những con voi màu hồngDậm chân trên mặt đất

Khoai tây lông tơ

project_idgroup_id
1 2
1 3
2 1
3 1
3 2
3 3
3 4

Làm việc và ngủ

SELECT
  teams.team_name AS team_name,
  projects.project_name AS project_name
FROM TABLE teams
INNER JOIN matches
  ON teams.id = matches.team_id
INNER JOIN matches
  ON matches.project_id = projects.id
ORDER BY teams.id;

tiến triển

Tòa nhà đập

Một số gặm gỗ và dậm chân trên mặt đất cần thiết

Bánh chuối

Ai đó đang ăn tất cả chuối

Team_nameProject_name
Ném chuốiGỗ gỗ
Ném chuốiChuối
Gỗ gỗGặm gỗ
Gỗ gỗChuối
Những con voi màu hồngDậm chân trên mặt đất
Những con voi màu hồngDậm chân trên mặt đất
Khoai tây lông tơChuối

Gỗ gỗ

Gặm gỗ

Tuyên bố

SELECT *
  FROM table1
  INNER JOIN table2
  ON table1.id = table2.id
  INNER JOIN table3
  ON table2.id = table3.id;
3 cho phép bạn tham gia cùng nhau một hoặc nhiều bảng.Nó phải được sử dụng cùng với câu lệnh ON để xác định mối quan hệ giữa các hàng của bảng và các hàng của một bảng khác.

Trong bài viết này, bạn đã học được cách sử dụng câu lệnh

SELECT *
  FROM table1
  INNER JOIN table2
  ON table1.id = table2.id
  INNER JOIN table3
  ON table2.id = table3.id;
3 để kết hợp ba bảng khác nhau.



Học mã miễn phí.Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển.Bắt đầu