结合具有类似ID的课程列

时间:2018-01-08 19:47:10

标签: php mysql

我有一个桥牌表,可以帮助我跟踪员工和他们必须采取的必修课程,并跟踪他们何时这样做。

completed_training [employee_id^, course_id^, date_completed]
employees [id^, first_name, last_name]
training_courses [course_id, course_name]

^foreign_key
<_>完成训练桥中的数据

|employee_id | course_id | date
| 1          | 1         | null
| 1          | 2         | null

我有一个while循环遍历并构建一个表并使用course_id复制雇员id。如何将course_id合并到一个,以便我可以对employee_id进行分组?

1 个答案:

答案 0 :(得分:1)

好的,这是我对你想要的东西的猜测,以及你如何得到它:

|employee_id | course_ids |
| 1          | 1,2        |

要获得此结果,您的select语句将类似,但需要额外的一点。首先,您将使用GROUP BY短语告诉MySQL将具有相同employee_id的结果聚集在一起。然后,您将使用组函数告诉查询如何组合ids列的结果。

大概现在你有类似

的东西
SELECT * from completed_training

你可能也会加入其他东西,没有你的实际查询,我无法知道。但是该查询将产生上面的示例输出。

您可以修改该查询以根据employee_id将数据聚集在一起:

SELECT * from completed_training GROUP BY employee_id

这将为每位员工提供一行,但您获得的course_id未定义。但是现在您正在对结果进行分组,您可以使用aggregate functions之一将课程ID组合在一起。

SELECT employee_id, GROUP_CONCAT(course_id SEPARATOR ',') from completed_training GROUP BY employee_id

这将创建一个结果,其中course_ids合并为一个列。