组合具有相似id的课程列

y1aodyip  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(294)

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

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循环,它遍历并构建了一个表,并将雇员id与课程id进行了复制。如何将课程id合并到一个表中,以便对雇员id进行分组?

eanckbw9

eanckbw91#

好吧,我猜你想要什么,怎么得到:

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

为了得到这个结果,您的select语句将是类似的,但有一点额外的。首先,您将使用 GROUP BY 短语告诉mysql用相同的 employee_id . 然后使用group函数告诉查询如何组合ids列的结果。
大概现在你有

SELECT * from completed_training

你可能会加入到其他东西,以及没有你的实际查询我不能知道。但该查询将生成上面的示例输出。
您可以修改该查询,以便根据员工id将数据组合在一起:

SELECT * from completed_training GROUP BY employee_id

这将为每个员工提供一行,但是 course_id 你得到的是未定义的。但是现在您正在对结果进行分组,可以使用其中一个聚合函数将课程ID组合在一起。

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

这将创建一个将课程ID合并到一个列中的结果。

相关问题