【问题标题】:PHP MySQL combine cells from different row with same valuePHP MySQL将来自不同行的单元格组合在一起具有相同的值
【发布时间】: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 吗?我不是在寻找任何人来编写整个代码或任何东西。我似乎想不出一种方法来完成它。我会很高兴有任何方向/指示可以解决这个问题。

一如既往,感谢您的时间和帮助。

【问题讨论】:

    标签: php mysql sql select


    【解决方案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....
      

      来源

      【讨论】:

      • 完美运行!非常感谢!
      猜你喜欢
      • 2020-08-21
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2012-11-23
      • 2021-04-26
      • 1970-01-01
      • 2015-11-14
      • 2021-07-05
      相关资源
      最近更新 更多