SQL engolindo valores? 1 boa prática que resolve o problema

SQL engolindo valores? 1 boa prática que resolve o problema
Guilherme Silveira
Guilherme Silveira

Compartilhe

Imagem de destaque #cover

Busquei os livros e a quantidade de vendas, mas meu novo livro de introdução a computação não apareceu:


select l.nome, count(v.id) as total from livros l JOIN vendas v on v.livro_id = l.id group by l.id;

\> Java SE 8 Programmer I, 4200 > Swift: Programe para iPhone e iPad, 3900

Meus livros (tabela da esquerda) são usados com um join com suas vendas (tabela da direita).

Banner da Escola de Data Science: Matricula-se na escola de Data Science. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

O join padrão só traz linhas quando existem valores equivalentes nas duas tabelas... se o livro é novo e não possui venda... não tem linha na tabela da direita... uma pena!

Se quero um join que traga todo mundo da esquerda (meus livros), independentemente de ter alguém na direita, basta usar um join canhoto, o LEFT JOIN:


select l.nome, count(v.id) as total from livros l LEFT JOIN vendas v on v.livro_id = l.id group by l.id;

\> Java SE 8 Programmer I, 4200 > Swift: Programe para iPhone e iPad, 3900 > Introdução a Computação, 0

Sempre que escrever a palavra JOIN, pare e pense: que tipo de join você deseja? Será que não queria um LEFT JOIN?

Desafio para a próxima dica: o que tem de horripilante na tabela a seguir?


create table Vendas (id integer primary key, valor double);
Guilherme Silveira
Guilherme Silveira

Co-fundador da Alura, da Caelum e do GUJ. Com 18 anos de ensino nas áreas de programação e dados, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.

Veja outros artigos sobre Data Science