FB: Concatenar 2 ou mais registros em 1 só
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
Curtidas 0
Melhor post
Claudio Ferreira
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:
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.
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:
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.
GOSTEI 1
Mais Respostas
Gandalf.nho
08/03/2006
Que tipo de informação vc quer concatenar?
GOSTEI 0
Marcosrocha
08/03/2006
+/- 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:
Onde tur_codigo e descrição pertencem a Turma e cad_codigo, cad_nome é da Tabela de Cadastro usando left join na TurmaProfessor.
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.
Quando faço o select vem assim:
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.
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.
GOSTEI 0
Martins
08/03/2006
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 ´||´
Boa sorte!!
para concatenar basta usar ´||´
select * from vendas where :cartoes like ´¬´ || cartao || ´¬´
Boa sorte!!
GOSTEI 0
Marcosrocha
08/03/2006
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
tur_codigo tur_descricao cad_nome 1 Delphi Marcos 1 Delphi Fabio
Meu Exemplo Acima Já Concatenado
tur_codigo tur_descricao cad_nome 1 Delphi Marcos, Fabio
GOSTEI 0
Martins
08/03/2006
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!
Boa sorte!
GOSTEI 0
Marcosrocha
08/03/2006
Não tive intenção de fazer isso! Srry! :oops:
GOSTEI 0
Martins
08/03/2006
Não tive intenção de fazer isso! Srry! :oops:
relaxa!!!!
Vamos tentar encontrar uma solução para esse problema OK!
GOSTEI 0
Marcosrocha
08/03/2006
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]
GOSTEI 0
Marcosrocha
08/03/2006
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
tipo concatenar os nomes dos professores por vírgula. Fábio, Marcos
GOSTEI 0
Bruno Belchior
08/03/2006
com stored procedure é possível fazer isso... coloque a estrutura da sua tabela para que possamos ajudar...
GOSTEI 0
Marcos Rocha
08/03/2006
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.
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.
GOSTEI 0