Como usar CROSS JOIN, Natural Junte-se, e condição de junção em SQL
SQL suporta um número de tipos de junções. A melhor opção para escolher em uma determinada situação depende do resultado que você está tentando alcançar. Aqui estão alguns detalhes para ajudá-lo a escolher qual deles você precisa.
CROSS JOIN
CROSS JOIN é a palavra-chave para o básico juntar-se sem um ONDE cláusula. portanto
SELECT * FROM EMPREGADOS, COMPENSAÇÃO -
também pode ser escrita como
SELECT * FROM EMPREGADOS CROSS JOIN COMPENSAÇÃO -
O resultado é o produto cartesiano (também chamado o produto cruzado) Das duas tabelas de origem. CROSS JOIN raramente lhe dá o resultado final que você quer, mas pode ser útil como o primeiro passo para uma cadeia de operações de manipulação de dados que, em última análise produzir o resultado desejado.
Natural participar
o junção natural é um caso especial de uma junção de igualdade. No ONDE cláusula de uma junção de igualdade, uma coluna de uma tabela de origem é comparado com uma coluna de uma segunda tabela de origem para a igualdade. As duas colunas devem ser do mesmo tipo e comprimento e deve ter o mesmo nome.
De fato, em participar de um natural, todas as colunas de uma tabela que têm os mesmos nomes, tipos e comprimentos como colunas correspondentes na segunda tabela são comparados pela igualdade.
Imagine que a tabela de compensação por parte do exemplo anterior tem colunas EmpID, Salário, e Bônus ao invés de Empregar, Salário, e Bônus. Nesse caso, você pode executar participar de um natural da tabela de compensação com a tabela EMPREGADOS. O tradicional JUNTE-SE sintaxe ficaria assim:
SELECIONAR E. *, C.Salary, C.BonusFROM EMPREGADOS E, COMPENSAÇÃO CWHERE E.EmpID = C.EmpID -
Esta consulta é um caso especial de uma junção natural. o SELECIONAR declaração irá retornar linhas onde se juntou E.EmpID = C.EmpID. Considere o seguinte:
SELECIONAR E. *, C.Salary, C.BonusFROM EMPREGADOS E NATURAL Cadastre COMPENSAÇÃO C -
Esta consulta irá juntar-se as linhas onde E.EmpID = C.EmpID, Onde e.salary = C.Salary, e onde E.Bonus = C.Bonus. A tabela de resultados conterá apenas as linhas onde todos colunas correspondentes corresponder. Neste exemplo, os resultados de ambas as consultas será o mesmo porque a tabela de empregado não conter um Salário ou um Bônus coluna.
condição de junção
UMA condição de junção é como uma equi-se juntar, com excepção da condição a ser testado não tem de ser uma igualdade (embora possa ser). Ele pode ser qualquer predicado bem formado. Se a condição for satisfeita, então a linha correspondente torna-se parte da tabela de resultados. A sintaxe é um pouco diferente do que você já viu até agora: A condição está contido em um EM cláusula em vez de numa ONDE cláusula.
Dizer que um estatístico de beisebol quer saber qual jarros Liga Nacional de ter lançado o mesmo número de jogos completos como uma ou mais arremessadores da Liga Americana. Esta questão é um trabalho para uma junção de igualdade, que também pode ser expresso com a sintaxe condição join:
SELECT * da National Cadastre AMERICANON NATIONAL.CompleteGames = AMERICAN.CompleteGames -