Tenho uma tabela “Funcionario” e uma tabela “Afastamento”, em uma relação 1:N. Gostaria de selecionar todos os funcionários e concatenar em um campo os motivos de afastamento.
Acho que com SQL você não consegue fazer isso não, cara. Você pode buscar os registros e montar o resto na mão, agora em SQL ele traria a coluna da esquerda repetida, para cada motivo de afastamento do funcionario"SELECT fun.nome, afa.descricao FROM funcionario fun
INNER JOIN afastamento afa ON afa.idfuncionario = fun.idfuncionario"
charleston10
Rodrigo Sasaki
Ops, dá sim… só usar um subselect e depois juntar esses dois campos… ou se pensar da pra usar um Coalesce …
blastec
Cara é o seguinte, vc passou pra gente a situação, mas a gente também não é mago, cadê a estrutura da sua tabela?
Rodrigo_Sasaki
É mesmo? e como ficaria isso?
Use como padrão os nomes que eu usei na query, depois o autor altera pra estrutura dele.
charleston10 , da forma que colocou vai dar erro se houver mais de um motivo.
Com sql padrão não dá pra fazer mesmo, mas alguns bancos fornecem alguma forma alternativa.
blastec, que banco está utilizando?
Rodrigo_Sasaki
Eu ia dizer exatamente isso hehehe, fiz até um teste aqui e realmente deu erro.
rmendes08
Só reforçando o que o pessoal disse, com SQL puro não dá mesmo. Se o resultado for utilizado em uma aplicação Java, é simples de fazer com código Java. Se for um relatório, dá pra fazer agrupamentos.
FabricioPJ
Se for Oracle, você pode usar o WM_CONCAT.
charleston10
O problema acho que não é nem o erro,
o cara passa uma dúvida e não passa a estrutura da tabela dele, eu fiz esse sql pelado sem nada pra imaginar,
… mas enfim