gauderiosc Postado Abril 19, 2012 Denunciar Share Postado Abril 19, 2012 Prezados, boa noite.Estou com uma dúvida.Tenho 4 tabelas:Uploaded with ImageShack.usGostaria de, mostrar uma a lista de TODOS os usuários existentes com os seguintes dados de cada um:usr_cod, pes_nome, usr_login, tusr_desc, fil_nomePoderiam me ajudar?Grato Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 gauderiosc Postado Abril 19, 2012 Autor Denunciar Share Postado Abril 19, 2012 (editado) 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_codGostaria 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 Abril 19, 2012 por gauderiosc Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 19, 2012 Denunciar Share Postado Abril 19, 2012 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 gauderiosc Postado Abril 19, 2012 Autor Denunciar Share Postado Abril 19, 2012 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 20, 2012 Denunciar Share Postado Abril 20, 2012 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á corretoSei 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 possivelvoce esta no caminho certo ...abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 gauderiosc Postado Abril 20, 2012 Autor Denunciar Share Postado Abril 20, 2012 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 possivelvoce esta no caminho certo ...abraçoO 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Abril 20, 2012 Denunciar Share Postado Abril 20, 2012 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 gauderiosc Postado Abril 20, 2012 Autor Denunciar Share Postado Abril 20, 2012 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
gauderiosc
Prezados, boa noite.
Estou com uma dúvida.
Tenho 4 tabelas:
Uploaded with ImageShack.us
Gostaria de, mostrar uma a lista de TODOS os usuários existentes com os seguintes dados de cada um:
usr_cod, pes_nome, usr_login, tusr_desc, fil_nome
Poderiam me ajudar?
Grato
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
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.