Fórum FB: Concatenar 2 ou mais registros em 1 só #55413

08/03/2006

0

Já vi um tópico aqui com essa mesma dúvida e disseram haver stored procedure pra fazer isso. Na verdade eu queria uma maneira de fazer isso direto do Select.


Marcosrocha

Marcosrocha

Responder

Post mais votado

22/08/2014

Bom dia,

Sei que já deve ter encontrado uma solução, porém como precisei e esse foi um dos primeiros tópicos que vi, então resolvi postar aqui a solução que encontrei.


Seria algo mais ou menos assim:
1
2
3
4
SELECT LIST(campo_para_concatenar)
   FROM tabela
  WHERE campo_chave = chave
  GROUP BY campo_chave;


Utilizando o código descrito acima o resultado será um MEMO com o resultado separado por "," (vírgulas)

Espero que ajude alguém que precise.

Claudio Ferreira

Claudio Ferreira
Responder

Gostei + 1

Mais Posts

08/03/2006

Gandalf.nho

Que tipo de informação vc quer concatenar?


Responder

Gostei + 0

08/03/2006

Marcosrocha

+/- assim!! Tenho uma tabela de Turma e outra TurmaProfessor onde TurmaProfessor liga vários professores em uma turma.
Quando faço o select vem assim:
1
2
3
tur_codigo tur_descricao cad_nome
1          Delphi        Marcos
1          Delphi        Fabio

Onde tur_codigo e descrição pertencem a Turma e cad_codigo, cad_nome é da Tabela de Cadastro usando left join na TurmaProfessor.
1
2
3
select a.*,c.cad_nome from Turma a
left join TurmaProfessor b on a.cad_codigo = b.cad_codigo and a.cad_tipo = b.cad_tipo
left join Cadastro c on b.cad_codigo = c.cad_codigo and b.cad_tipo = c.cad_tipo

Claro que existem as chaves entre as tabelas e tal...
Mas eu queria que os 2 professores aparecessem no mesmo campo pra não sair duplicado. Isso, no select, sem Stored Procedure.


Responder

Gostei + 0

08/03/2006

Martins

vc não disse qual o tipo de informação q deseja concatenar, por isso, aí vai um exemplo bem simples.

para concatenar basta usar ´||´
1
select * from vendas where :cartoes like ´¬´ || cartao || ´¬´


Boa sorte!!


Responder

Gostei + 0

09/03/2006

Marcosrocha

vc não disse qual o tipo de informação q deseja concatenar, por isso, aí vai um exemplo bem simples.

Tá na cara! No meu exemplo acima os professores se repetem, podem ser N professores. Eu quero concatenar esses N registros que virá do banco em uma célula.
Resultado do Select sem Concatenar
1
2
3
tur_codigo tur_descricao cad_nome
1          Delphi        Marcos
1          Delphi        Fabio

Meu Exemplo Acima Já Concatenado
1
2
tur_codigo tur_descricao cad_nome
1          Delphi        Marcos, Fabio



Responder

Gostei + 0

09/03/2006

Martins

Desculpe, mas se vc olhar a hora em que foram postadas as respostas, vai ver q a diferença de 2 segundos, por tanto estavamos respondendo e eu não havia visto ainda a sua resposta com o exemplo.

Boa sorte!


Responder

Gostei + 0

09/03/2006

Marcosrocha

Não tive intenção de fazer isso! Srry! :oops:


Responder

Gostei + 0

09/03/2006

Martins

Não tive intenção de fazer isso! Srry! :oops:


relaxa!!!!

Vamos tentar encontrar uma solução para esse problema OK!


Responder

Gostei + 0

09/03/2006

Marcosrocha

Fiz uma Gambiware no select pra trazer só o primeiro professo mesmo!! Por enquanto resolve. Se não conseguir fazer isso no select vai ficar assim mesmo!!!
[b:dc5543fcc1][color=green:dc5543fcc1]select [/color:dc5543fcc1][color=red:dc5543fcc1]first 1[/color:dc5543fcc1][color=green:dc5543fcc1] a.*,c.cad_nome from Turma a left join TurmaProfessor b on a.cad_codigo = b.cad_codigo and a.cad_tipo = b.cad_tipo left join Cadastro c on b.cad_codigo = c.cad_codigo and b.cad_tipo = c.cad_tipo[/b:dc5543fcc1][/color:dc5543fcc1]



Responder

Gostei + 0

16/03/2006

Marcosrocha

Galera aquela Gambiware não resolveu não!! Como eu faço isso numa Stored Procedure??
tipo concatenar os nomes dos professores por vírgula. Fábio, Marcos


Responder

Gostei + 0

16/03/2006

Bruno Belchior

com stored procedure é possível fazer isso... coloque a estrutura da sua tabela para que possamos ajudar...


Responder

Gostei + 0

22/08/2014

Marcos Rocha

Claudio, na época deste post eu utilizava o famoso Firebird 1.5.3 pt-br. A partir do FB 2.1 esta função LIST está disponível, um grande avanço, de fato. http://www.firebirdsql.org/refdocs/langrefupd21-aggrfunc-list.html

Acho que na época consegui resolver mudando a lógica, não me recordo se utilizei Stored Procedure. De qualquer forma, agradeço a todos que colaboraram.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar