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

Inner Join

Quando em uma tabela utilizamos dois inner joins, o segundo inner join é referenciado entre a nova tabela e a tabela que estava a direita do primeiro inner join ou entre a nova tabela e a tabela da esquerda do primeiro inner join? Ou tanto faz? Segue o exemplo com a duvida no segundo inner join:

select tabelaEsquerda.nome, tabelaDireita.cpf ,  novaTabela.campo from tabelaEsquerda
inner join tabelaDireita
on tabelaEsquerda.cpf = tabelaDireita.cpf
inner join novaTabela 
on (*tabelaEsquerda ou tabelaDireta???*).cpf = novaTabela.cpf
4 respostas

Oii Julio, tudo bem?

O relacionamento do segundo inner join vai depender de quais dados você quer que retorne. Ambas tabelas possuem as chaves primárias e estrangeiras, que é o campo CPF.

Se você precisa relacionar os dados da novaTabela com a tabelaEsquerda:

inner join novaTabela on (tabelaEsquerda.cpf = novaTabela.cpf)

Agora, se precisa relacionar com a tabelaDireita:

inner join novaTabela on (tabelaDireita.cpf = novaTabela.cpf)

Tudo vai depender de quais dados você quer trazer, ficou mais claro? Qualquer dúvida é só falar, tá bom?

Olá Maria Gabriela, tudo sim. Muito obrigado pela sua ajuda! E se caso o segundo inner join for um parametro que só corresponda apenas uma das tabelas e a novaTabela, esse segundo inner join aplicaram seu filtro em cima do resultado que virá do primeiro inner join, correto? Ex:

...
inner join tabelaDireita
on tabelaEsquerda.cpf = tabelaDireita.cpf
inner join novaTabela 
on tabelaDireta.id = novaTabela.id
solução!

Oi Julio,

O Join é utilizado para consultar dados de uma ou mais tabelas, baseado no relacionamento entre colunas destas tabelas, certo?

O join não aplica no resultado de tabelas, ele apenas faz o relacionamento.

inner join tabelaDireita on tabelaEsquerda.cpf = tabelaDireita.cpf
inner join novaTabela  on tabelaDireta.id = novaTabela.id

Você está relacionado os dados da tabelaDireita com a tabelaEsquerda e dados da novaTabela com a tabelaDireita, mas você só conseguiu fazer o segundo relacionamento porque já fez o primeiro.

Se quer que traga mais dados, você tem que especificar os campos no SELECT. Se quiser fazer um teste, faça um 'SELECT * FROM', a consulta trará os dados das três tabelas juntas.

Qualquer dúvida me fala, tá bom? :D

Entendi Gabriela, muito obrigado pela sua ajuda!