Ir para conteúdo
Fórum Script Brasil
  • 0

Select de várias tabelas com chave em uma


gauderiosc

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0

Acho que eu mesmo achei a resposta.

SELECT pes_nome, pes_telpref, pes_email, usr_login, usr_cod, tusr_desc, fil_nome FROM di_usr

LEFT JOIN di_pessoas ON di_pessoas_pes_cod = pes_cod

LEFT JOIN di_tipousr ON di_tipousr_tusr_cod = tusr_cod

LEFT JOIN di_filiais ON di_filiais_fil_cod = fil_cod

Gostaria de adicionar um detalhe.

Tem um campo que indica se o usuário está ativo ou inativo. É um Varchar(1), e tem "S" ou "N" dentro.

Como faço pra adicionar esta restrição a esta pesquisa?

Restrição = apenas usuários ativos (usr_ativo = 'S')

Editado por gauderiosc
Link para o comentário
Compartilhar em outros sites

  • 0

SELECT pes_nome, pes_telpref, pes_email, usr_login, usr_cod, tusr_desc, fil_nome FROM di_usr
LEFT JOIN di_pessoas ON di_pessoas_pes_cod = pes_cod
LEFT JOIN di_tipousr ON di_tipousr_tusr_cod = tusr_cod
LEFT JOIN di_filiais ON di_filiais_fil_cod = fil_cod
WHERE usr_ativo = 'S'

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Jhonas,

estou me habituando com as sintaxes... não sabia onde entrava a cláusula WHERE.

A forma que fiz é a mais econômica em relação ao processamento em Banco de Dados ou alguém consegue encontrar uma forma melhor para efetuar esta pesquisa?

Jhonas, aproveitando seu conhecimento gostaria de questionar se estou fazendo da melhor maneira.

Tenho apenas uma tabela endereço, visando facilitar uma futura manutenção caso seja necessário alterá-la, pois desta maneira eu modificaria apenas em um ponto.

Pensei em fazer da mesma maneira para contatos (telefone, skype, email, MSN, celular,....)

Teria apenas uma tabela para esses dados e cada uma dessas tabelas que precisem de endereço/contatos teria uma chave estrangeira da tabela que precisa. Como dá pra ver na tabela di_filiais e di_pessoas. Será que esta é a melhor maneira de fazer, visando futuras manutenções no banco de dados e não duplicar informações?

Sei que desta maneira a pesquisa fica um pouco mais complexa desta maneira, precisa left join ou vários, pois preciso pesquisar em mais de uma tabela para trazer as informações, esse preço a pagar é justo? Vale a pena?

Comentários são bem vindos.

Link para o comentário
Compartilhar em outros sites

  • 0
Será que esta é a melhor maneira de fazer, visando futuras manutenções no banco de dados e não duplicar informações?
em termos de pesquisa em tabelas está correto

Sei que desta maneira a pesquisa fica um pouco mais complexa desta maneira, precisa left join ou vários, pois preciso pesquisar em mais de uma tabela para trazer as informações, esse preço a pagar é justo? Vale a pena?

vale a pena se na pesquisa ( principalmente se for em rede ) voce trouxer o menor numero de registros possivel

voce esta no caminho certo ...

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Sei que desta maneira a pesquisa fica um pouco mais complexa desta maneira, precisa left join ou vários, pois preciso pesquisar em mais de uma tabela para trazer as informações, esse preço a pagar é justo? Vale a pena?

vale a pena se na pesquisa ( principalmente se for em rede ) voce trouxer o menor numero de registros possivel

voce esta no caminho certo ...

abraço

O servidor será na internet e terão cerca de 20 máquinas acessando, 5 por escritório (com internet distintas para cada).

A dúvida é a seguinte. Eu tenho várias tabelas, para não repetir o tipo de dados em tabelas diferentes, priorizando uma manutenção mais simplificada. No entanto poderia ter todos esses dados em todas as tabelas que preciso e com isso diminuir a carga da pesquisa (processamento no servidor de BD).

Quero por na balança para ver o que vale mais a pena.

Distribuindo os dados em todas as tabelas que precisam endereço/telefone a pesquisa fica mais simples de programar e o processamento do DB também. No entanto, em caso de mudança da quantidade de dígitos de telefone, como ocorreu em SP recentemente, adicionando 1 dígito, ficaria complicado dar manutenção, pois teria que mudar várias tabelas.

Como fica esta balança no seu ponto de vista?

Link para o comentário
Compartilhar em outros sites

  • 0
O servidor será na internet e terão cerca de 20 máquinas acessando, 5 por escritório (com internet distintas para cada).

A dúvida é a seguinte. Eu tenho várias tabelas, para não repetir o tipo de dados em tabelas diferentes, priorizando uma manutenção mais simplificada. No entanto poderia ter todos esses dados em todas as tabelas que preciso e com isso diminuir a carga da pesquisa (processamento no servidor de BD).

Quero por na balança para ver o que vale mais a pena.

Distribuindo os dados em todas as tabelas que precisam endereço/telefone a pesquisa fica mais simples de programar e o processamento do DB também. No entanto, em caso de mudança da quantidade de dígitos de telefone, como ocorreu em SP recentemente, adicionando 1 dígito, ficaria complicado dar manutenção, pois teria que mudar várias tabelas.

Como fica esta balança no seu ponto de vista?

Esta resposta é para você pensar, pois ninguém melhor do que você para avaliar seu negócio.

Em meu trabalho eu sempre priorizo a normalização das tabelas, mas em se tratando de web, deve-se levar em consideração a quantidade de acessos, o tamanho das tabelas e a quantidade de registros retornados e, nestes casos, a desnormalização de algumas tabelas se faz necessária.

Link para o comentário
Compartilhar em outros sites

  • 0
Esta resposta é para você pensar, pois ninguém melhor do que você para avaliar seu negócio.

Em meu trabalho eu sempre priorizo a normalização das tabelas, mas em se tratando de web, deve-se levar em consideração a quantidade de acessos, o tamanho das tabelas e a quantidade de registros retornados e, nestes casos, a desnormalização de algumas tabelas se faz necessária.

A quantidade de registros retornados será a mesma, pois é o mesmo número de informações.

A quantidade de acessos é que pode variar.

Mas como falei antes, o que me preocupa é o custo de processamento para o servidor do banco de dados.

Gostaria de saber se um select simples é muito mais "barato" do que os left joins.

Pensando em grande escala (não para essas 20 máquinas, que são poucos acessos), mas o que eu quero ver é se vale a pena desnormalizar as tabelas e facilitar os SQLs ou melhorar o hardware do servidor e dificultar os SQLs em prol da facilidade de manutenção.

Essa na realidade é a dúvida.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...