É possível escrever uma consulta de junção sem ON
declaração? e como essas junções diferem LEFT JOIN, RIGHT JOIN
funciona.
mysql
join
left-join
inner-join
right-join
Alexander T.
fonte
fonte
ON
cláusula informa ao servidor como as tabelas estão relacionadas, não. Se todos os seus diferentes tipos de junção derem o mesmo resultado, você está fazendo isso errado de alguma forma, e adicionar algum código pode nos ajudar a identificar seu problema. Enquanto isso, acesse o blog de Jeff Atwood para uma introdução de 2 minutos sobre os diferentes tipos de junção.Respostas:
A documentação do MySQL cobre este tópico.
Aqui está uma sinopse. Ao usar
join
ouinner join
, aon
condição é opcional. Isso é diferente do padrão ANSI e de quase qualquer outro banco de dados. O efeito é across join
. Da mesma forma, você pode usar umaon
cláusula comcross join
, que também difere do SQL padrão.Uma junção cruzada cria um produto cartesiano - ou seja, cada combinação possível de 1 linha da primeira tabela e 1 linha da segunda. A junção cruzada para uma tabela com três linhas ('a', 'b' e 'c') e uma tabela com quatro linhas (digamos 1, 2, 3, 4) teria 12 linhas.
Na prática, se você quiser fazer uma junção cruzada, use
cross join
:é muito melhor do que:
e:
A
on
cláusula é necessária para uma junção externa direita ou esquerda, portanto, a discussão não é relevante para eles.Se você precisa entender os diferentes tipos de junções, precisa estudar alguns bancos de dados relacionais. Stackoverflow não é um lugar apropriado para esse nível de discussão.
fonte
Veja alguns exemplos em http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Você pode usar 'USING' em vez de 'ON' como na consulta
fonte