JOIN vs. INNER JOIN e EXTERIOR COMPLETO

27

Eu sei que há uma diferença entre INNER JOINe FULL OUTER JOIN, eu posso vê-lo, mas, qual é a diferença entre os dois seguinte: JOIN ... ON...e INNER JOIN...ON...e ainda ainda JOIN...ON...vsFULL OUTER JOIN...ON...

A razão é que eu acho que talvez apenas o uso JOINesteja atrapalhando uma consulta na qual estou trabalhando que está publicada no SO, link para a pergunta AQUI.

Então, basicamente, qual é a diferença sintática entre as próprias operações do conjunto?

Obrigado,

MCP_infiltrator
fonte
1
A postagem cruzada está postando a mesma pergunta em fóruns diferentes. A publicação de um link é aceitável e desejável.
choroba
Ok, eu vou postar um link para a pergunta, meu código é de retorno muitos duplicatas e isso está me deixando louco ... Eu have'nt mesmo tive meu café da manhã ainda lol
MCP_infiltrator
4
@MCP_infiltrator dê uma olhada provavelmente na melhor explicação que existe: codinghorror.com/blog/2007/10/…
mkk
Se o problema real é que seu código está retornando muitas duplicatas, convém fazer outra pergunta sobre qual é o ponto principal. E você pode postar seu código. Quando eu ajudei pessoas com problemas duplicados no passado, geralmente é devido a condições de junção incorretas ou, ocasionalmente, devido ao mapeamento ruim entre o modelo de dados SQL e o modelo de dados relacional.
22813 Walter Mitty
Oi @WalterMitty, a pergunta está publicada em SO, acho que minhas junções são o problema, mas em outra nota também fiquei curiosa, estou com apenas seis meses escrevendo SQL e auto-didata, o link está na pergunta.
MCP_infiltrator 30/07/2013

Respostas:

33

JOINe INNER JOINsão iguais, a palavra-chave inner é opcional, pois todas as junções são consideradas junções internas, a menos que especificado de outra forma. A diferença entre JOINe FULL OUTER JOINé a mesma que entre INNER JOINe FULL OUTER JOIN.

Um INNER JOINretornará apenas linhas correspondentes se uma linha da tabela A corresponder a muitas linhas da tabela B, a linha da tabela A será repetida com cada linha da tabela B e vice-versa.

A FULL OUTER JOINretornará tudo o que uma junção interna faz e retornará todas as linhas não correspondentes de cada tabela.

Ryathal
fonte
5
Obrigado, eu não sabia disso JOINe INNER JOINeram declarações equivalentes.
MCP_infiltrator 25/07/2013
7
A melhor prática é escrever explicitamente INNER JOIN para evitar confusão.
Neil