Ir para conteúdo

POWERED BY:

Arquivado

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

Marcio Leandro

concatenar

Recommended Posts

Olá.Tenho uma tabela, onde está os registros de funcionário(PK, nome, cargo):1 - Fulano de tal - programador2 - Ciclano da Silva - DBAE outra, que está as atribuições de cada um (FK, atribuiçAo):1 - a1 - f2 - aPreciso retornar uma linha, com as atribuições de cada um, o problema é que a subquery retorna mais de uma linha. Preciso concatenar, os resultados encontrados em atribuições, A query seria +- assim:

SELECT f.nome, (SELECT a.atribuicao FROM atribuicao a) AS atribuicoes -- aqui pego os registros concatenadosFROM funcionarios f

Não sei se fui claro, he he http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, seria assim:

nome | atribuiçãoFulano de Tal | a_f -- usei "-" para concatenarCiclano da Silva | a

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Você pode utilizar o GROUP_CONCAT para ter este resultado, acredito que é o que você quer.

Dá uma olhada neste link: GROUP_CONCAT (site do mysql) - inglês.

Ex:

Criei duas tabelas bem simples:

teste (CODIGO int(5), NOME varchar(20))

teste2 (CODIGO int(5), FUNCAO varchar(20))

este campo código imagine que é o ID do funcionário. :P

Daí a query:

SELECT A.CODIGO,CONCAT(A.NOME,' | ',GROUP_CONCAT(B.FUNCAO ORDER BY B.FUNCAO SEPARATOR ' - ')) AS TESTE

FROM teste1 A LEFT JOIN teste2 B ON B.CODIGO = A.CODIGO

GROUP BY A.CODIGO

ORDER BY A.NOME

Observe que foi utilizado CONCAT para fazera concatenação do nome com o resultado do group_concat utilizando um separador entre o nome e as funções, no caso o |.

beleza?

Obs: esta função, está disponível a partir da versão 5.0 se não me engano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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