Hướng dẫn join three tables in php mysql - tham gia ba bảng trong php mysql

Bạn muốn sử dụng chức năng MySQL gọi là Group_concat để đạt được điều này. Truy vấn của bạn sẽ trông giống như thế này:

SELECT courseName, group_concat(teacherName) FROM 
teacher, course, courses_has_teachers
WHERE
courses_has_teachers.teacher_id = teacher.id
AND
course.id = courses_has_teachers.course.id
GROUP BY courseName

Tôi đã viết lại truy vấn này ở định dạng ANSI-92, mà bạn có thể không quen thuộc, nhưng có thể thực hiện các truy vấn có nhiều lần đọc dễ đọc hơn nhiều:

SELECT 
    courseName, 
    group_concat(teacherName) 
FROM 
    teacher
        join course
            on courses_has_teachers.teacher_id = teacher.id
        join courses_has_teachers
            on course.id = courses_has_teachers.course.id
WHERE
    // Any conditions you want on the query
GROUP BY
    courseName

Ngoài ra, bạn có thể muốn đọc một câu hỏi và trả lời dài mà tôi đã viết mà bạn có thể thấy hữu ích.

Hướng dẫn join three tables in php mysql - tham gia ba bảng trong php mysql

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 tham gia 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

SELECT 
    courseName, 
    group_concat(teacherName) 
FROM 
    teacher
        join course
            on courses_has_teachers.teacher_id = teacher.id
        join courses_has_teachers
            on course.id = courses_has_teachers.course.id
WHERE
    // Any conditions you want on the query
GROUP BY
    courseName
1 cho biết hàng nào của bảng đầu tiên có liên quan.

Hướng dẫn join three tables in php mysql - tham gia ba bảng trong php mysql

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 
    courseName, 
    group_concat(teacherName) 
FROM 
    teacher
        join course
            on courses_has_teachers.teacher_id = teacher.id
        join courses_has_teachers
            on course.id = courses_has_teachers.course.id
WHERE
    // Any conditions you want on the query
GROUP BY
    courseName
2 cho biết hàng nào của bảng thứ hai có liên quan.

Hướng dẫn join three tables in php mysql - tham gia ba bảng trong php mysql
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 join three tables in php mysql - tham gia ba bảng trong php mysql
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 join three tables in php mysql - tham gia ba bảng trong php mysql

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

SELECT 
    courseName, 
    group_concat(teacherName) 
FROM 
    teacher
        join course
            on courses_has_teachers.teacher_id = teacher.id
        join courses_has_teachers
            on course.id = courses_has_teachers.course.id
WHERE
    // Any conditions you want on the query
GROUP BY
    courseName
1 và một cột cho
SELECT 
    courseName, 
    group_concat(teacherName) 
FROM 
    teacher
        join course
            on courses_has_teachers.teacher_id = teacher.id
        join courses_has_teachers
            on course.id = courses_has_teachers.course.id
WHERE
    // Any conditions you want on the query
GROUP BY
    courseName
2, 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ốiBánh chuối
Ném chuốiNghiên cứu về giấc ngủ
Gỗ gỗĐập bulding
Gỗ gỗNghiên cứu về giấc ngủ
Gỗ gỗĐập bulding
Gỗ gỗĐập bulding
Những con voi màu hồngNghiên cứu về giấc ngủ

Gỗ gỗ

Đập bulding

Những con voi màu hồng

Tòa nhà đập



Khoai tây lông tơ

Tôi có thể tham gia 3 bảng trong mysql không?

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. Để làm điều đó, bạn thêm một câu lệnh tham gia bên trong thứ hai và một câu lệnh thứ hai trên câu lệnh để chỉ ra bảng thứ ba và mối quan hệ thứ hai.. To do that you add a second INNER JOIN statement and a second ON statement to indicate the third table and the second relationship.

Làm cách nào để hợp nhất 3 bảng trong SQL?

Làm thế nào để tham gia 3 bảng trở lên trong SQL..
Tham gia đơn giản.Đầu tiên, tất cả các bảng được tham gia bằng cách sử dụng từ khóa tham gia, sau đó là mệnh đề WHERE được sử dụng: từ nhân viên e tham gia Cục tham gia Mức lương d.Nơi e.Id = s.Emp_id và e.....
Tham gia lồng nhau.Câu lệnh tham gia lồng nhau được sử dụng với từ khóa trên: chọn e.Id, e.Tên, s.Mức lương, D ..

Chúng tôi có thể áp dụng tham gia trên 3 bảng không?

Sử dụng tham gia SQL không có nghĩa là bạn chỉ có thể tham gia hai bảng.Bạn có thể tham gia 3, 4, hoặc thậm chí nhiều hơn!Các khả năng là vô hạn.You can join 3, 4, or even more! The possibilities are limitless.

Làm thế nào tham gia 3 bảng bên trong tham gia SQL?

Cú pháp cho nhiều lần nối: Chọn Cột_NAME1, Cột_NAME2, .. Từ TABE_NAME1 TRONG TRONG TABLE_NAME2 trên điều kiện_1 nối bên trong Table_Name3 trên điều kiện..Lưu ý: Trong khi chỉ chọn các cột cụ thể sử dụng Table_Name.SELECT column_name1,column_name2,.. FROM table_name1 INNER JOIN table_name2 ON condition_1 INNER JOIN table_name3 ON condition_2 INNER JOIN table_name4 ON condition_3 . . . Note: While selecting only particular columns use table_name.