Pular para o conteúdo

Junção de campos da mesma coluna, porém, de registros diferentes (É possível ??)

Responder tópico
  • Denunciar
  • Indicar

1. Junção de campos da mesma coluna, porém, de registros diferentes (É possível ??)

Enviado em 17/08/2015 - 14:13h


Olá a todos,

Há muito, venho tentando descobrir uma forma de consulta que me permita inserir registros de uma mesma coluna e tabela em um único campo. Para facilitar o entendimento vou exemplificar:

Vamos supor que eu tenha um banco de dados de que trate ocorrências de assalto, ex de algumas colunas que poderiam existir:

id_processo, numero_processo, data_ocorrencia, hora_ocorrencia, vitimas

O último campo (vitimas) pode trazer tanto 1 vítima envolvida, quanto 2, 3, e quantas mais forem necessárias. Tendo em vista que temos apenas 1 campo (vitimas), quando inseridos, na mesma tabela, 2 vítimas para a mesma ocorrência serão gerados 2 registros contendo o mesmo numero_processo, data_ocorrência e hora_ocorrência.

O que preciso é: através de um SELECT * from processos trazer as 2 vítimas em um único campo, exemplo:

id_processso numero_processo, data_ocorrencia, hora_ocorrencia, vitimas
1 155 15/07/2015 10:30 João
2 155 15/07/2015 10:30 Maria

O que desejo:
numero_processo, data_ocorrencia, hora_ocorrencia, vitimas
155 15/07/2015 10:30 João - Maria

Não sei se pude me fazer claro. Se puderem ajudar, ficarei eternamente grato.

Pensei em utilizar recursividade (with recursive ) mas não consegui desenrolar.

Grato,
Estevam

Responder tópico

2. Re: Junção de campos da mesma coluna, porém, de registros diferentes (É possível ??)

Enviado em 17/08/2015 - 22:40h

Faria um loop em shell script:


psql ..... -c "SELECT numero_processo, data_ocorrencia, hora_ocorrenciaFROM tabela GROUP BY numero_processo, data_ocorrencia, hora_ocorrencia" |
while read LINHA
do
# para cada linha fazer nova consulta para coletar os nomes das vitimas
PROCESSO=$(echo $LINHA | cut -d'|' -f1);DATA=$(echo $LINHA | cut -d'|' -f2);HORA=$(echo $LINHA | cut -d'|' -f3)
VITIMAS=$(psql ... -c "SELECT vitimas FROM tabela WHERE numero_processo = $PROCESSO AND data_ocorrencia = '$DATA' AND hora_ocorrencia = '$HORA'" | xargs )
# agora basta fazer o sql para INSERIR os dados na tabela destino
psql ... -c "INSERT INTO tabela_destino($PROCESSO, '$DATA', '$HORA', '$VITIMAS');"
done
Agora pela modelagem, talvez o ideal fosse uma tabela de vinculação entre cpf da vitima e ocorrência:
id_ocorrencia,cpf_vitima
.

3. Re: Junção de campos da mesma coluna, porém, de registros diferentes (É possível ??)

Enviado em 18/08/2015 - 09:14h

Agradeço o pronto atendimento,

Sou leigo quanto ao psql, mas diante das novas possibilidades de extrapolar os limites do sql, vou procurar me inteirar.

Grato,
Estevam


Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder