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

Dúvida no Ex. 1 da Aula 5 - Juntando dados de várias tabelas

Realizei minha pesquisa com uma sintaxe um pouco diferente gostaria de saber se posso ter perdas em não informar conforme está no exercício.

Não peguei a do INNER

select nome, valor from compras join compradores on comprador_id = compradores.id where data < '2010-08-09';
2 respostas

Charles primeiramente na sua SQL faltou você definir a tabela depois do on:

Seu código:

compradores on comprador_id = compradores.id

Certo:

compradores on compradores.comprador_id = compradores.id

Como não foi definido um apelido para a tabela utilize o nome dela seguido do "."

Referente ao INNER ele não é obrigatório ser informado, não tem diferença nenhuma ter ele ou não, o resultado e performance será o mesmo.

Espero ter ajudado.

solução!

Charles, bom dia.

JOINS: São usados para trazer registro de uma ou mais tabelas relacionadas.

Dentro de Joins nós temos subconjuntos:

  • INNER JOIN = Retorna registros apenas quando há correspondências em ambas as tabelas, ou seja, tanto a tabela da esquerda como a tabela da direita. Como assim tabela da esquerda e direita? São os relacionamentos das tabelas normais.

  • OUTER JOIN = Outer JOIN retorna registros entretanto não há uma necessidade de ter correspondências em ambas as tabelas. Dentro do OUTER JOIN nós temos também subconjuntos como LEFT JOIN - RIGHT JOIN.

Para fazer um JOIN não é necessário informar o INNER assim como para fazer um OUTER JOIN também não é necessário usar o OUTER.

Ex:

INNER JOIN:

SELECT nome, valor FROM compras JOIN compradores ON compradores.comprador_id = compradores.id WHERE data < '2010-08-09';

OUTER JOINS:

SELECT nome, valor FROM compras LEFT JOIN compradores ON compradores.comprador_id = compradores.id WHERE data < '2010-08-09';