我有一个包含身份证号码,姓名,课程期限和教师姓名的数据库。每行包括学生的ID,姓名,期间和教师,这意味着每个学生有多行。那不是我的问题。我的问题是有些班级列出了两个教师......这意味着1个班级有两个独立的行,每个教师一个。不幸的是,我无法控制数据的格式,因为它是从没有大量格式选项的系统导出的。
这是一个例子,请注意第23和24行是针对同一个班级和学生的,但唯一不同的是教师姓名。
pk id last first period teacher
14 12345 Smith John 3 HARRIS
15 12345 Smith John 8 LEAL
17 12345 Smith John 1 HOUSTON
23 56789 Doe Jane 8 MERCER
24 56789 Doe Jane 8 RUIZ
25 56789 Doe Jane 3 BECK
26 56789 Doe Jane 1 STEED
我想将具有相同句号和学号的两行合并为一行。所有信息都保持不变,除了两个不同的教师姓名将被合并为“Mercer& Ruiz”之类的东西。理想情况下,最终结果看起来像是,
24 56789 Doe Jane 8 MERCER & RUIZ
这可能使用PHP和/或MySQL吗?我不是在寻找任何人编写整个代码或任何东西。我似乎无法想到实现它的方法。我对任何方向/指示都很满意。
一如既往,感谢您的时间和帮助。
答案 0 :(得分:6)
SELECT MAX(pk),
ID,
`last`,
`first`,
GROUP_CONCAT(teacher SEPARATOR ' & ') teachers
FROM tableName
// WHERE clause here...
GROUP BY `last`, `first`, `Period`
// ORDER BY clause here....
SOOURCE
答案 1 :(得分:1)
SELECT pk,id,last,first,period GROUP_CONCAT(teacher)
FROM table
GROUP BY id, first,last,period
应该做你需要的。