Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paginad

Agrupar mensagens pelo idPai

Recommended Posts

Opa, salve galera!!!! To com uma missão aqui para montar uma QUERY que está além dos meus conhecimentos. Obrigado desde já pelo tempo disponível para me ajudar.

 

Estou fazendo um sistema de Mensagens entre uma empresa e os clientes desta empresa. Essa tabela de mensagens usa somente 1 tabela, onde o campo (tipo) determina quem mandou a mensagem, se 0 é cliente mandando para empresa e 1 é empresa mandando para o cliente. 

 

Tabela Mensagens

id, idPai, token, assunto, tipo, data

1, 1, 12345, Assunto X, 0, 20/04  <-- mensagem enviada pelo cliente
2, 1, 54321, Resp Empresa,1,21/04 <-- Resposta da empresa
3, 1, 54320, Resp Empresa Dois, 1, 22/04 <-- Nova Resposta da empresa
4, 4, 45567, Assunto Y, 0, 23/04 <-- Nova mensagem do cliente
5, 4, 67678, Resp Empresa, 25/04 

Diante dessa tabela, preciso:

 

1. Agrupar essas mensagens assim:
Assunto X (3) - 22/04 <-- Esse (3) é o total de interações e a data é a ultima data da interação
Assunto Y (2) - 25/04

2. Preciso pegar o token da mensagem, mas tem que ser o primeiro token de cada interação

3. Quando uso o WHERE tipo = 1, são mensagens que chegaram para o cliente e se usar 0, são mensagens enviadas, no Backoffice listo as enviadas e as que chegaram.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por brunoogm
      Pessoal tenho o seguinte select no mysql
       
      SELECT SUM(ValorTotal) as Total_Mes, YEAR(DataPedido) as Ano,
                                                      CASE extract(MONTH from DataPedido)
                                                      WHEN 1 THEN 'Janeiro'
                                                      WHEN 2 THEN 'Fevereiro'
                                                      WHEN 3 THEN 'Março'
                                                      WHEN 4 THEN 'Abril'
                                                      WHEN 5 THEN 'Maio'
                                                      WHEN 6 THEN 'Junho'
                                                      WHEN 7 THEN 'Julho'
                                                      WHEN 8 THEN 'Agosto'
                                                      WHEN 9 THEN 'Setembro'
                                                      WHEN 10 THEN 'Outubro'
                                                      WHEN 11 THEN 'Novembro'
                                                      WHEN 12 THEN 'Dezembro'
                                                  END AS mes
                                                  from comanda Where Year(DataPedido) = year(curdate()) and CodigoSituacao = 2 OR Year(DataPedido) = (year(now())-1) and CodigoSituacao = 2
                                                  group by mes, YEAR(DataPedido)
                                                  limit 0,12
       
      E ele me retorna a seguinte situação : 
       
      Total_Mes      Ano         mes
      555.00            2018       Agosto
      310.00            2019       Agosto
      150.00            2019       Fevereiro
      777.00            2018       Janeiro
      100.00            2019       Janeiro
      70.00             2019         Maio
       
      E no caso eu gostaria de omitir os registros que NÃO se repetem, ou seja, retirar da consulta os resultados onde o mês só apareça uma vez (maio e fevereiro)
      Preciso que o resultado seja o seguinte :
       
      Total_Mes      Ano         mes
      555.00            2018       Agosto
      310.00            2019       Agosto
      777.00            2018       Janeiro
      100.00            2019       Janeiro
       
      Alguém tem uma  ideia de como fazer isso ?
    • Por Danado_
      Galera como separo por grupos e pulo linha?
      por exemplo: (anexo)

      tenho isso até o momento: 
       
      $lista = mysqli_query($con, "SELECT * FROM lista_convidados WHERE cliente = '$cliente' and lado = 'Noiva' order by responsavel asc"); while($dados = mysqli_fetch_assoc($lista)){ $html .= '<tr>'; $html .= '<td>'.$dados["responsavel"].'</td>'; $html .= '<td>'.$dados["convidado"].'</td>'; $html .= '<td>'.$dados["tipo"].'</td>'; $html .= '<td>'.$dados["tel_convidado"].'</td>'; $html .= '</tr>'; }
       
      Tem que ficarr assim: (com essa quebra de linha)

    • Por reginaldo123
      quero fazer uma consulta que retorna as ultimas mensagens por data e agrupa pelo id_an

      $query="SELECT id_mensagem ,id_an,id_usuario,mensagem,data,id_p FROM mensagem WHERE  id_usuario='{$id_usuario}' ORDER BY data desc
       GROUP by id_an";
      mas esta dando erro a consulta sql
    • Por alekaspary
      Bom dia Amigos.
      Preciso fazer uma consulta na tabela baterias que possui as colunas (id, voltagem, reservatorio_id, data) em que me retorne a ultima voltagem gravada no banco de cada reservatório.
       
      OBS:
      1- Usando o ORDER BY juntamento com o GROUP BY, a consulta retorna a voltagem mais antiga gravada no banco;
      2 - LIMIT não pode ser usado, já que serão vários reservatórios a serem consultados;
      3 - Já tentei utilizar o MAX(data), a consulta me retorna a data mais alta, porém com a voltagem mais antiga;
       
      EM anexo imagem com valores fictícios na tabela
       

    • Por GudaEevSo
      Bom dia,
       
      Preciso fazer a soma da coluna QT_REAL onde a soma das linhas não podem passar um determinado valor (NR_CAMPO) . Essa soma deve ser feita validado o NR_CICLO, NR_OP, DS_NIVEL e CD_COR onde será agrupado as linhas até a QT_REAL for menor ou igual que o NR_CAMPO.
       
      Como está hoje:

       
      Como deveria ficar:

       
      Colunas da tabela:
      NR_CICLO,
      NR_OP,
      DS_NIVEL,
      NR_CAMPO = CAMPO LIMITADOR - QUANTIDADE DA COLUNA SOMADA NÃO PODE ULTRAPASSAR ESSE VALOR.
      CONT = NUMERO DE LINHAS
      CD_COR
      QT_REAL = QUANTIDADE A SER SOMADA.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.