我有一个桥牌表,可以帮助我跟踪员工和他们必须采取的必修课程,并跟踪他们何时这样做。
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进行分组?
答案 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合并为一个列。