mysql连接表,其中第一个表中的字段作为第二个表中的多个值

时间:2013-10-09 05:55:03

标签: php mysql

这个问题可能很愚蠢,但我想知道mysql中是否可行。

` Course_Table:

|--------------|-
|id | name     |
----|----------|
|1  |HTML5     |
|2  |CSS3      |
|3  |JavaScript|
|4  |PHP       |
|5  |MySQL     |
---------------|

USER_TABLE

--------------
|id |name    |
---------------
|1  |Alice   |   
|2  |Bob     |
|3  |Caroline|
|4  |David   | 
|5  |Emma    |
--------------

user_course

---------------------------
|id |  userid      |course|
---------------------------
|1  |   1      | 1    |
|2  |   1      | 2    |
|3  |   1      | 4    |
|4  |   3      | 1    |
|5  |   3      | 5    |
---------------------------`

我希望我的结果像这样

` --------------------------
 | username  |  course     |
  -------------------------|
 |Alice    | HTML,CSS3,php |
 |Caroline | HTML,MYSQL    |
 --------------------------`

1 个答案:

答案 0 :(得分:4)

您需要先使用INNER JOIN加入表格,因为您只想向用户显示课程。

MySQL中有一个名为GROUP_CONCAT()的内置函数,用于连接行。

SELECT  a.name,
        GROUP_CONCAT(c.name) courseList
FROM    user_table a
        INNER JOIN user_course b
            ON a.id = b.userid
        INNER JOIN course_table c
            ON b.course = c.id
GROUP   BY a.name

要进一步了解联接,请访问以下链接: