PHP/MySQL:加入三个表并合并结果

use*_*033 6 php mysql sql join

可能重复:
我可以将多个MySQL行连接到一个字段中吗?

我有三张桌子:

表格1: teacher

id
firstname
surname
Run Code Online (Sandbox Code Playgroud)

表#2: course

id
name
Run Code Online (Sandbox Code Playgroud)

表3: courses_has_teachers

course_id
teacher_id
Run Code Online (Sandbox Code Playgroud)

我想得到的是教师信息的课程信息.我已经尝试过这个查询:

SELECT * FROM 
teacher, course, courses_has_teachers
WHERE
courses_has_teachers.teacher_id = teacher.id
AND
course.id = courses_has_teachers.course.id
Run Code Online (Sandbox Code Playgroud)

我得到了我想要的东西,但是:如果一门课程有一位以上的老师,我想把结果结合起来.我希望得到一个包含课程信息和教师列表的简单行,而不是具有相同课程信息的多行.

不喜欢这样:

Name      | Teacher
--------------------
Course 1  | Person 1
Course 1  | Person 2
Run Code Online (Sandbox Code Playgroud)

但是这个:

Name      | Teacher
------------------------------
Course 1  | Person 1, Person 2
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

Joh*_*Woo 6

使用GROUP_CONCAT.尝试这个,

SELECT  a.name, GROUP_CONCAT(CONCAT(firstname, ' ', surname))
FROM    course a
        INNER JOIN courses_has_teachers b
            ON a.id = b.course_id
        INNER JOIN teacher c
            ON b.teacher_id = c.iD
GROUP BY a.name
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!这很有效.确实非常有用. (2认同)