Olá desenvolvedores, hoje aprenderemos como consultar dados em uma tabela usando inner join. Até aqui quando queríamos trazer os dados de uma única tabela utilizávamos apenas o SELECT * FROM, e ele nos atendia neste caso. Mas agora temos duas tabelas relacionadas “userposjava” e “telefoneuser”, e desejamos trazer os dados combinados dessas duas tabelas simultaneamente. Neste caso o SELECT * FROM sozinho não será suficiente.
Assim, para obtermos o resultado desejado poderemos então recorrer a cláusula join da linguagem SQL. O join combina uma ou mais tabelas em um banco de dados relacional. Dessa forma quando usamos a cláusula inner join objetivamos obter os dados relacionados das duas tabelas da base de dados “posjava”.
Nós temos de um lado, na tabela “userposjava” os registros cadastrados que trazem o id, nome e e-mail. Do outro lado, na tabela “telefoneuser” os registros trazem o número de telefone e uma chave relacionando-o a uma tupla da tabela pai. Na terminologia de banco de dados relacional uma linha é chamada tupla.
RELACIONANDO TABELAS
O que faremos é trazer todas as colunas da tabela “telefoneuser” usando o SELECT * FROM. E para trazermos uma expressão como resultado, teremos que criar um alias (as), que atribui a tabela um atalho, como uma espécie de apelido. Em situações onde existem duas ou mais tabelas relacionadas o alias serve para evitar colisões entre atributos. E com o inner join estabeleceremos o relacionamento entra as duas tabelas “telefoneuser” onde o as = “fone” e “userposjava” onde o as = “userpos”.
SELECT * FROM telefoneuser AS fone
INNER JOIN userposjava AS userpos
ON fone.usuariopessoa = userpos.id;
Porém, note que determinamos uma condição, traremos os dados apenas onde (on) na tabela “telefoneuser” que apelidamos de fone o “usuariopessoa” for igual a ao código na tabela pai. Ao executarmos teremos uma nova tabela com todos os dados.
Mas observe que o resultado da busca trouxe alguns campos que neste momento não me interessam, como resolver isso? Eu quero apenas que sejam exibidos o nome, o número do telefone, o tipo e o e-mail, e importante, necessariamente nesta ordem. Para isso temos apenas que indicar na querie o que deverá ser exibido e como deverá ser exibido.
SELECT nome, numero, tipo, email FROM telefoneuser AS fone
INNER JOIN userposjava AS userpos
ON fone.usuariopessoa = userpos.id;
Veja abaixo o resultado da busca sendo exibido exatamente como determinamos que deveria ser.
Mas agora queremos como resultado todos os dados, porém, apenas do registro que tem o id 11.
SELECT nome, numero, tipo, email FROM telefoneuser AS fone
INNER JOIN userposjava AS userpos ON fone.usuariopessoa =
userpos.id WHERE userpos.id = 11;
O resultado dessa busca é mostrado abaixo:
EM POUCAS PALAVRAS
Então é isso, vimos vários exemplos de como proceder em uma busca quando temos duas ou mais tabelas relacionadas. Aprendemos a determinar também quais dados buscar e em qual ordem exibi-los. Espero que tenham gostado, eu fico por aqui e nós nos vemos no próximo tutorial.