PHP MySQL将来自不同行的单元格组合在一起具有相同的值
Posted
技术标签:
【中文标题】PHP MySQL将来自不同行的单元格组合在一起具有相同的值【英文标题】:PHP MySQL combine cells from different row with same value 【发布时间】:2012-12-31 12:44:14 【问题描述】:我有一个包含身份证号码、姓名、上课时间和教师姓名的数据库。每行包括学生的 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 吗?我不是在寻找任何人来编写整个代码或任何东西。我似乎想不出一种方法来完成它。我会很高兴有任何方向/指示可以解决这个问题。
一如既往,感谢您的时间和帮助。
【问题讨论】:
【参考方案1】:SELECT pk,id,last,first,period GROUP_CONCAT(teacher)
FROM table
GROUP BY id, first,last,period
应该做你需要的。
【讨论】:
【参考方案2】: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....
SQLFiddle Demo
来源
GROUP_CONCAT()【讨论】:
完美运行!非常感谢!以上是关于PHP MySQL将来自不同行的单元格组合在一起具有相同的值的主要内容,如果未能解决你的问题,请参考以下文章
使用 GridPane 为不同行中的每个单元格实现唯一的列宽?