search with select in database with repeated records

0

I'm doing a select in my bank, that is, Postgres , and there are more records coming ..

For example, id_pessoa comes a 10 more record than it should come ..

SELECT pac.cns, 
    pac.cns_responsavel, 
    pac.cpf_responsavel, 
    pac.flag_alergico, 
    pac.flag_ativo, 
    pac.microarea, 
    pac.nome_responsavel, 
    pac.observacoes_alergias,
    pac.id_familia,
    pac.id_pessoa,
    pac.id_identidade_genero,
    pac.id_orientacao_sexual, 
    pend.bloco,
    pend.cep,
    pend.complemento,
    pend.nome_bairro,
    pend.nome_logradouro,
    pend.numero,
    pend.ponto_referencia,
    pend.id_bairro,
    pend.id_logradouro,
    pend.id_municipio,
    pend.id_pais,
    pend.id_uf,
    pesfis.carteira_profissional,
    pesfis.certidao_obito,
    pesfis.codigo_reservista,
    pesfis.cpf,
    pesfis.data_cadastro_pis_pasep,
    pesfis.data_obito,
    pesfis.emissao_carteira_profissional,
    pesfis.flag_ativo,
    pesfis.identidade_rg,
    pesfis.orgao_emissor_rg,
    pesfis.pis_pasep,
    pesfis.secao_eleitoral,
    pesfis.serie_carteira_profissional,
    pesfis.titulo_eleitor,
    pesfis.uf_orgao_emissor,
    pesfis.zona_eleitoral,
    pesfis.id_cbo,
    pesfis.id_escolaridade,
    pesfis.id_estado_civil,
    pesfis.id_etnia,
    pesfis.id_nacionalidade,
    pesfis.id_raca_cor,
    pesfis.id_sexo,
    pcarac.estatura,
    pcarac.flag_deficiente,
    pcarac.flag_doador,
    pcarac.peso,
    pcarac.id_cbor,
    pcarac.id_tipo_sanguineo,
    pcarac.id_orientacao,
    pcarac.id_identidade,
    pcarac 
FROM sau.pacientes pac, 
      glb.pessoas_enderecos pend, 
      glb.pessoas_fisicas pesfis, 
      glb.pessoas_caracteristicas pcarac,
      glb.pessoas pe
WHERE pac.id_pessoa= pend.id_pessoa 
        and pend.id_entidade = pesfis.id_entidade 
        and pend.id_pessoa= pesfis.id_pessoa 
        and pesfis.id_entidade = pcarac.id_entidade
        and pesfis.id_pessoa= pcarac.id_pessoa 
        and pcarac.id_entidade =  1;
    
asked by anonymous 05.12.2017 / 02:18

2 answers

0

Hello! I have no experience with Postgres, but usually this happens due to a bad relationship with other tables (which make duplicate records).

Attempts to use DISTINCT after "SELECT" or a GROUP BY after the "WHERE".

    
05.12.2017 / 03:07
0

As you are relating multiple tables, the query returns several of the same record every time it can find the record searched in the tables. For example, it has a record in the table sau.pacientes and this record has two records listed in the table glb. People_enderecos, so due to the relationship that select would return two rows.

Please select below to see what you are repeating:

SELECT *
FROM sau.pacientes pac, 
      glb.pessoas_enderecos pend, 
      glb.pessoas_fisicas pesfis, 
      glb.pessoas_caracteristicas pcarac,
      glb.pessoas pe
WHERE pac.id_pessoa= pend.id_pessoa 
        and pend.id_entidade = pesfis.id_entidade 
        and pend.id_pessoa= pesfis.id_pessoa 
        and pesfis.id_entidade = pcarac.id_entidade
        and pesfis.id_pessoa= pcarac.id_pessoa 
        and pcarac.id_entidade =  1;
    
05.12.2017 / 19:59