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 -

menu