Desmistificando o JOIN.
Um tutorial simples e objetivo para desconstruir nosso processo de desenvolvimento.
Antes de começar, saiba que você pode encontrar o script e o excel utilizados aqui no repositório do GitHub indicado no final do texto.
Neste post curto e objetivo, trago duas tabelas criadas no SQL Server, para realizarmos uma intersecção entre elas e mostrar seus respectivos dados.
No exemplo abaixo, criamos um cenário que contém os seguintes tópicos: eventos e tipos de eventos. Cada evento possuirá um tipo de evento (sem entrar no contexto da criação ou dos valores em si, mas sim no comando para realizar a intersecção).
Um mecanismo bem comum em bancos de dados relacionais é o de relacionar dados de duas ou mais tabelas, gerando algo semelhante com o apresentado abaixo:
Partindo desse ponto, quais são os dados que temos em comum entre as duas tabelas?
O tipoeventoid da tabela EVENTOSs e o tipoeventoid da tabela TIPOEVENTOS, correto?
Vamos estabelecer uma comparação entre elas no código:
Depois, é possível indicar que o primeiro tipoeventoid refere-se a tabela EVENTOS e o segundo refere-se a tabela TIPOEVENTOS (nota-se que, nesse cenário, não importa a ordem de comparação).
Logo em seguida, iremos identificar quais tabelas queremos fazer a seleção.
No SQL, colocamos from na primeira tabela e (inner) join na segunda tabela, para então trazermos a intersecção entre elas, colocando on na frente da condição, como mostra o código:
Na última parte desse processo, precisamos identificar quais dados das tabelas gostaríamos de mostrar e indicá-los na frente de um select. Por exemplo, como mostra o código abaixo, eu só quero o título da tabela EVENTOS (EVENTOS.TITULO) e o nome da tabela TIPOSEVENTOS (TIPOEVENTOS.NOME).
Em resumo:
Quais colunas apresentam os mesmos dados nas duas tabelas?
E elas pertencem à quais tabelas?
De qual (from ) e para qual (join) tabela queremos juntar os dados?
E quais campos queremos selecionar para serem exibidos?
Pronto! Essa seleção de dados resultará uma tabela assim:
Achou muito verboso? Spoiler: tem como encurtar os nomes usando um recurso chamado “alias”, mas isso fica para um próximo post! Dá só uma olhada como ficaria o nosso select:
Todo o conteúdo utilizado neste post está disponível no GitHub. E, por favor, caso queira enviar alguma sugestão, deixe seu comentário ou envie uma dica. Ficarei muito grata.