Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no PostGre SQL

Boa noite! Alguém tem alguma dica para facilitar o "JOIN" no PostGre SQL ? Tenho muita dificuldade em usá-lo para fazer relatórios. Obrigado!!

2 respostas
solução!

Olá Pablo, tudo bem?

A maneira mais pratica para fazer a utilização de JOIN é verificar a integridade entre as tabelas, as chaves primárias e estrangeiras. Utilize sempre os campos de referencia entre tabelas.

Exemplo prático:

  • Considere uma tabela de PESSOAS, com os campos: id_pessoas | nome | cpf | telefone
  • Considere uma segunda tabela chamada de ENDERECO_PESSOA, que possui os campos: endereco_id | id_pessoas | logradouro

A relação entre as duas nesse caso será o campo ID_PESSOAS, que por boa pratica deve estar em um relacionamento de chave estrangeira, sendo o ENDERECO_PESSOA dependente da tabela PESSOAS.

1 - Em uma situação hipotética, devemos buscar as pessoas e o logradouro, porem apenas as pessoas que possuem endereços. logo o comando seria:

SELECT PESSOAS.NOME, 
              ENDERECO_PESSOA.LOGRADOURO
  FROM PESSOAS
     JOIN ENDERECO_PESSOA
 USING (id_pessoas)

Ou

SELECT PESSOAS.NOME,
              ENDERECO_PESSOA.LOGRADOURO
  FROM PESSOAS
     JOIN ENDERECO_PESSOA
        ON PESSOAS.ID_PESSOA = ENDERECO_PESSOA.ID_PESSOA

2 - Em outra situação, devemos buscar todas as pessoas e o logradouro, independente se possui ou não endereço. Logo o comando seria:

SELECT PESSOAS.NOME, 
              ENDERECO_PESSOA.LOGRADOURO
  FROM PESSOAS
     JOIN ENDERECO_PESSOA
 USING (id_pessoas)

Ou

SELECT PESSOAS.NOME,
              ENDERECO_PESSOA.LOGRADOURO
  FROM PESSOAS
     LEFT JOIN ENDERECO_PESSOA
        ON PESSOAS.ID_PESSOA = ENDERECO_PESSOA.ID_PESSOA

No primeiro caso, utilizamos o comando** JOIN** para juntar as informações, no segundo usamos o LEFT JOIN, para juntar as tabelas independente da condição.

Vou praticar mais! Obrigado pelas dicas, ajudou muito!