RELACIONAMENTO DE TABELAS

USUARIO.EXCLUIDOS 03/06/2007 20:06:07
#219535
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
USUARIO.EXCLUIDOS 03/06/2007 20:18:18
#219538
que banco de dados vc usa?
USUARIO.EXCLUIDOS 03/06/2007 20:33:22
#219543
Citação:

NILDGLAN escreveu:
que banco de dados vc usa?

Eu estou usando Access.
ROBIU 03/06/2007 20:56:10
#219547
Resposta escolhida
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.
USUARIO.EXCLUIDOS 03/06/2007 21:35:08
#219551
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?
USUARIO.EXCLUIDOS 03/06/2007 22:44:11
#219553
find?? vc precisa usar SQL e fazer um JOIN entre as duas tabelas.
USUARIO.EXCLUIDOS 03/06/2007 22:46:54
#219555
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

USUARIO.EXCLUIDOS 04/06/2007 01:14:59
#219559
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.
USUARIO.EXCLUIDOS 04/06/2007 18:26:06
#219715
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