RELACIONAMENTO DE TABELAS
Pessoal, fiz um relacionamento entre 2 tabela pelo "Id" autonumeração até aqui tudo bem, na 1º tabela tenho (Id e Produto) na 2º tenho (Id e Preço) a dúvida é:
Quando eu consulto o Produto na tabela 1 quero obter o preço isso é possÃÂÂvel? ou tenho que consultar a tabela 2 usado o Id do produto.
Grato,
Wagner
Quando eu consulto o Produto na tabela 1 quero obter o preço isso é possÃÂÂvel? ou tenho que consultar a tabela 2 usado o Id do produto.
Grato,
Wagner
que banco de dados vc usa?
Citação:Eu estou usando Access.NILDGLAN escreveu:
que banco de dados vc usa?
Tavares,não use campo autonumeração do access que dá problemas.Este campo Id de uma tabela não tem nada a ver com o campo id da outra tabela.Na Tabela Preço tem que ter um campo que tenha o codigo do produto. Neste caso o tipo de relacionamento deve ser um-para-um, ou seja, um produto só pode ter um preço. Se um produto tiver mais de um preço, deve ter um campo de controle como data do Preço e pegar sempre o preço com data mais recente. Anexo um exemplo de como deve ser. Veja o relacionamento e a consulta. Você pode usar a consulta para exibir os dados no Vb, da mesma forma que faz com as tabelas.
Entendi, digamos que eu pesquise o produto teoricamente estou fazendo um find na tabela de produtos se encontrar o produto quero exibir o preço, para exibir o preço tenho que fazer um find na tabela de preço ou por estar relacionado é possÃÂÂvel exibir o preço sem fazer um find na tabela de preço?
find?? vc precisa usar SQL e fazer um JOIN entre as duas tabelas.
Modelagem muito estranha esse usada por você!!!! Uma relação 1:1 entre produto e preço.
Utilize JOIN de uma das formas abaixo:
SELECT pro.Codigo, pro.Produto, pre.Preco
FROM Produtos pro INNER JOIN Precos pre ON pro.Codigo = pre.CodigoProduto
ou
SELECT pro.Codigo, pro.Produto, pre.Preco
FROM Produtos pro, Precos pre
WHERE pro.Codigo = pre.CodigoProduto
Utilize JOIN de uma das formas abaixo:
SELECT pro.Codigo, pro.Produto, pre.Preco
FROM Produtos pro INNER JOIN Precos pre ON pro.Codigo = pre.CodigoProduto
ou
SELECT pro.Codigo, pro.Produto, pre.Preco
FROM Produtos pro, Precos pre
WHERE pro.Codigo = pre.CodigoProduto
Citação:JOSE.NIZ escreveu:
Modelagem muito estranha esse usada por você!!!! Uma relação 1:1 entre produto e preço.
Utilize JOIN de uma das formas abaixo:
SELECT pro.Codigo, pro.Produto, pre.Preco
FROM Produtos pro INNER JOIN Precos pre ON pro.Codigo = pre.CodigoProduto
ou
SELECT pro.Codigo, pro.Produto, pre.Preco
FROM Produtos pro, Precos pre
WHERE pro.Codigo = pre.CodigoProduto
Este tipo de relacionamento é recomendado quando um item na tabela pai pode ou não ter itens na tabela filha.
Exemplo: Vendas x Local de Entrega Diferenciado ... em alguns casos a venda vai ao endereço do cliente e então não precisarÃÂÂamos de dados complementares na tabela endereco_entrega, em outros o cliente pode solicitar que entreguemos em outros lugares como a casa de um parente, alguma obra citando o caso de materiais de construção.
Pense bem, um produto que não tenha preço ?
Existe o relacionamento 1:∞ (1 para muitos)
é o caso de 1 venda que irá conter 1 ou vários produtos ... Um pedido terá 1 cliente que poderá ou não solicitar vários produtos
Existe o famigerado ∞:∞ (Muitos para muitos)
Seria o caso de um cadastro de estudantes onde um pai poderia ter vários filhos matriculados e um filho poderia ter mais de um pai (a mãe) no cadastro de pais ... um exemplo fraco, eu sei, mas isto é devido a pouca ocorrencia que acontece nos programas triviais que utilizam BD.
A minha sugestão é realmente baixar códigos exemplo aqui no site e estudar o assunto relacionamento, entender que ele reflete as operações do nosso dia a dia e só fazemos transportar para o ambiente computacional.
Lembre-se também que toda aplicação primeiro deve funcionar em sua mente, depois organizamos os dados num BD que suporte o tamanho e a agilidade necessária ... então a aplicação funcionaria nas tabelas (poderiamos incluir clientes, produtos, fazer vendas etc utilizando as tabelas e os relacionamentos ... por último, e só por último começamos a escrever o código VB que seria somente uma ferramenta RAID para fazer todas operações que ja estão nÃÂÂtidas na mente, funcionando nas tabelas do BD.
Só assim o código VB será escrito de forma rápida e eficiente.
Não senta pra programar VB antes de o BD estar funcionando, não vai ficar bom ... eu insisti muito no contrário, tive que dar o braço a torcer, agora resta a vc acreditar ou não em minhas afirmações.
Na minha opinião, humilde, seu tópico não vai te levar a nada antes de fazer o que sugeri acima.
Agradeço muito o tempo dispensado e certamente vou levar em consideração todas as colocações de uma pessoa que me parece no mÃÂÂnimo esperiente.
Tópico encerrado , respostas não são mais permitidas