Ir ao conteúdo
  • Cadastre-se

MySQL Relacionamento entre 3 tabelas


Ir à solução Resolvido por joseph_dev,

Posts recomendados

E ai pessoal, beleza? Então, sou novo no assunto Banco de Dados, curti bastante então estou começando a me aprofundar no assunto, porém existe algumas coisas que ainda fico meio travado, como este problema a seguir. Bom a questão é a seguinte, possuo 1 tabela chamada "compras" e nela possui 2 chaves estrangeiras de outras 2 tabelas que eu quero fazer relacionamento, a questão é: quero puxar um ID diferente em uma tabela, vou mostrar as tabelas para entenderem melhor.
Como puderam ver existem 3 tabelas com os ID's, a tabela que faz o relacionamento entre as 2 é a de COMPRAS, onde tem as chaves estrangeiras das tabelas PRODUTOS e CLIENTES. A questão é que eu quero exibir na tela as informações pelos ID's da tabela COMPRAS, no caso o ID 2 da tabela CLIENTES é Tatiane, quero que exiba na tela o produto que ela comprou que no caso é o PRODUTO de ID 7, como esta na tabela de COMPRAS. Não se se consegui deixar claro minha dúvida, qualquer coisa volto a explicar novamente. Eu estava tentando algo desse tipo:
 

SELECT clientes.nome, produtos.produtos, compras.data_compra FROM compras  
INNER JOIN produtos ON compras.id_compra = produtos.id_produto
INNER JOIN clientes ON compras.id_compra = clientes.id_cliente
WHERE id_compra = '1';

Porém isso retornava apenas o ID 1 de cada tabela coisa que não quero, queria que ele retornasse os valores atribuídos ao ID 1 da tabela compras relacionando com outras tabelas.

Screenshot_1.png

Screenshot_2.png

Screenshot_4.png

Link para o comentário
Compartilhar em outros sites

  • Solução

Fala, @leo18vn !

 

Você deve fazer referencia às chaves das tabelas do join que você está associando... nesse caso, produtos e clientes...  você associou à chaves da própria tabela de compras...

 

Você fez assim:

SELECT clientes.nome, produtos.produtos, compras.data_compra FROM compras  
INNER JOIN produtos ON compras.id_compra = produtos.id_produto
INNER JOIN clientes ON compras.id_compra = clientes.id_cliente
WHERE id_compra = '1';

Deveria ser assim:

SELECT clientes.nome, produtos.produtos, compras.data_compra FROM compras  
INNER JOIN produtos ON compras.id_produto = produtos.id_produto
INNER JOIN clientes ON compras.id_cliente = clientes.id_cliente
WHERE id_compra = '1';

Veja as chaves dos joins... Percebeu as chaves que foram associadas?

Veja se era isso...

adicionado 7 minutos depois

Por isso que só trazia o ID 1 de cada tabela... porque na tabela compras só tem o ID 1 e você disse nos JOINs que quer os produtos com ID igual a 1 e clientes com ID igual a 1. Que é o valor do ID da compra.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...