首页 > 解决方案 > 日期和时间相同的Mysql GROUP_CONCAT问题

问题描述

我试图进行查询以连接一些记录,但我没有得到预期的结果。场景如下:老师可以在校外安排(参观、研讨会),并且可以带几节课。数据库允许将每个类作为唯一记录插入,所以现在我想使用 group_concat 向用户显示,只有一个带有 x 个类的记录。这是我的数据库的一个例子:

id ,activity      ,location              ,date      ,hour , class
344,Vou ao teatro!,Teatro                ,2021-03-26,11:00, A
345,Vou ao teatro!,Teatro                ,2021-03-26,11:00, B
346,Vou ao teatro!,Teatro                ,2021-03-26,11:00, C
347,Museu         ,Praça da República - V,2021-05-06,10:00, D
348,Museu         ,Praça da República - V,2021-05-06,10:00, E
350,Museu         ,Praça da República - V,2021-05-06,10:00, F
354,Museu         ,Praça da República - V,2021-05-06,10:00, G
355,Museu         ,Praça da República - V,2021-05-06,10:00, H

所以我需要的是连接 id(第一个元素)和类(最后一个元素)只有 2 行而不是 9

我到目前为止是这样的:

SELECT ae.Atividade, ae.Local, ae.DataAula, TIME_FORMAT(ae.HoraInicio, '%H:%i') AS HoraInicio,
       TIME_FORMAT(ae.HoraFim, '%H:%i') AS HoraFim, ae.Autorizado, p.Nome,
       GROUP_CONCAT(ae.idAula order by ae.idAula) AS idAula,
       GROUP_CONCAT(t.Turma order by t.Turma) AS turma
FROM
    aulaexteriorturmas AS a
        INNER JOIN aulaexterior AS ae
                   ON (a.idAula = ae.idAula)
        INNER JOIN turmas AS t
                   ON (a.idTurma = t.idTurma)
        INNER JOIN anosescolares AS aescolar ON (ae.idAnoEscolar = aescolar.idAnoEscolar)
        INNER JOIN professores AS p on (ae.idProfessor = p.idProfessor)
WHERE aescolar.Estado = 1 and ae.Autorizado = '-1'
group BY ae.DataAula, p.Nome;

结果是这样的(显示第一行)

**346,346,346**, Vou ao teatro!,Teatro 2021-03-26,11:00,12:30,"A,B,C"

id重复了……太错误了

请问有什么帮助吗?

标签: mysql

解决方案


推荐阅读