我有一个数据库,里面有身份证号码、姓名、课时和老师姓名。每一行都包含一个学生的id、姓名、句号和教师,这意味着每个学生都有多行。那不是我的问题。我的问题是,有些班级有两个老师,listed...which的意思是每节课有两个单独的行,每个老师一个。不幸的是,我无法控制数据的格式,因为它是从一个没有很多格式选项的系统导出的。
这里有一个例子,注意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吗?我不寻找任何人来写整个代码或任何东西。我似乎就是想不出一个方法来完成它。我很高兴有任何方向/指示来实现这一点。
一如既往,感谢您的时间和帮助。
发布于 2013-01-17 10:31:17
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
发布于 2013-01-17 10:31:45
SELECT pk,id,last,first,period GROUP_CONCAT(teacher)
FROM table
GROUP BY id, first,last,period应该做你需要的事情。
https://stackoverflow.com/questions/14371264
复制相似问题