Ir ao conteúdo

MySQL Relacionamento entre 3 tabelas


Ir à solução Resolvido por joseph_dev,

Posts recomendados

Postado

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

Postado

Creio que basta to colocar os campos IDs faltantes no Select.

Se todos os campos tiverem o nome ID, então vai precisar renomear eles, mas é fácil.

 

Select Tabela1.ID ID1, Tabela2.ID ID2

Postado

Os campos de ID's são diferentes em cada tabela como mostrei na imagem. Mas não entendi a parte de colocar os campos ID's faltantes no select. Queria exibir as informações relacionando elas a tabela COMPRAS, onde lá diz especificamente por ID de cada tabela o que fazer. 

  • Solução
Postado

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
Postado

Perfeito amigo, funcionou agora. Obrigado! Depois da sua explicação percebi sim, estava sem associação das chaves primarias das outras tabelas com a tabela de relacionamento.

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...