Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Problemas com o join

Boa tarde, o objetivo do exercício é fazer com que a tabela 'compras' tenha a coluna 'compradores' com valores mesclados (Mauricio e Adriano), utilizando o conceito de chave estrangeira. Contudo, o resultado que tenho tido é apenas um dos valores para comprador (Adriano). Mesmo seguindo os passos do professor, meu resultado é diferente do obtido por ele (que recebe 'Mauricio' e 'Adriano'). Segue o código:

select observacoes, valor, nome from compras join compradores on compras.comprador_id = compradores.id

Como proceder?

6 respostas

Oi Vinícius tudo bem?

Eu gostaria de simular o cenário usando os dados do seu banco de dados para ver onde está o erro.

Através deste tutorial https://www.hostnet.com.br/info/exportacao-do-banco-via-mysql-workbench/ gere o arquivo SQL de todo o seu banco de dados por gentileza.

Coloque o arquivo .sql gerado em algum servidor de arquivos como o dropbox e cole o link aqui para eu poder analisar.

Segui os passos do tutorial citado, baixando e instalando o WorkBench. Criei também um dropbox. Segue o link:

https://www.dropbox.com/s/ij09rzaucofr0ik/ProjetoControleCompras.sql?dl=0

Tenho uma outra dúvida relacionada a isto (posso abrir outro tóptico, se for necessário), mas é o seguinte: o arquivo que submeto no github é este que foi gerado no WorkBench? ->Ao submetê-lo no github, como teste, ao abrir o arquivo o que visualizamos do código é algo confuso, que não corresponde com as queries das consultas e procedimentos feitos em aulas. ->Além disto, também tentei submeter o arquivo cap3.sql, contudo ao abri-lo no github o código descrito é apenas o da criação da tabela, com seus dados sendo inseridos. Ou seja, nada muito esclarecedor sobre os comandos aprendidos.

Como e o que submeter no github acerca do que fiz em cursos, para que os comandos, queries e funções utilizadas estejam disponíveis para quem as consultar?

Grato!

O, analisando o arquivo do github vi que não adiantou rodar todo ele, deu alguns erros mas aí eu criei um novo database dei use no nome do database, extrai as informações que queria (os create e insert) e ignorei todo resto e dei select no que queria individualmente.

Mas eu consegui ao objetivo que queria que era analisara a sua base de dados.

A diferença da sua query:

select observacoes, valor, nome from compras join compradores on compras.comprador_id = compradores.id

com a do professor (na transcrição):

SELECT * FROM compras JOIN compradores ON compras.comprador_id = compradores.id

é que a dele ele pega todo mundo e a sua só pega observacoes, valor, nome. As duas estão certas.

Agora se estiver vendo pelo vídeo ele faz igual a você só que os dados da tabela dele são diferentes, ele tem menos registros que você na tabela por isso a diferença. Mas essa diferença é irrelevante. Você fez certo e é isso que importa.

Sua outra dúvida respondi no seu outro tópico. https://cursos.alura.com.br/forum/topico-submeter-arquivo-sql-no-github-75811

Espero ter ajudado!!!

Desculpa......eu não entendi. Há dois nomes de comprador: Maruricio e Adriano. Ele ensina passo-a-passo de como fazer retornar compras dos dois usuários. A questão é: seguindo o passo-a-passo do professor, não tenho o mesmo resultado que ele, por que para mim só aparecem compras de Adriano. Se eu estou utilizando o mesmo arquivo do professor (disponibilizado para download) e estou seguindo o passo a passo dele, como meu resultado dá diferente?

Ví sua resposta do outro tópico...Se eu copiar e colar um banco de dados que traz como resultado apenas um dos nomes, quem avaliar este código pensará que há algo de errado com ele. Preciso fazer retornar dois nomes, como o exemplo do professor, para mostrar que minha query esta funcionando....

solução!

Entendi.

Tem uma hora que o professor fala para rodarmos essas query

UPDATE COMPRAS SET COMPRADOR_ID = 1 WHERE ID < 8; UPDATE COMPRAS SET COMPRADOR_ID = 2 WHERE ID >= 8;

Como na sua tabela compras o menor ID é 181 todo mundo virou comprador_id 2 que é o Adriano.

Vamos corrigir assim. Na tabela de compras os id menor que 200 vão ser igual a 1 que é o comprador Mauricio.

Rode a seguinte query:

UPDATE compras SET comprador_id=1 WHERE ID<200

Assim partes das compras agora são do Mauricio e outra parte são do Adriano.

Solucionado. Muito obrigado!