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

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

Estevam Daniel
conscius

(usa Insigne)

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


  


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

Raimundo Alves Portela
rai3mb

(usa Outra)

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 ??)

Estevam Daniel
conscius

(usa Insigne)

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








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts