Usando junções

As condições de junção podem ser especificadas nas cláusulas FROM ou WHERE, sendo recomendado que sejam especificadas na cláusula FROM. As cláusulas WHERE e HAVING também podem conter critérios de pesquisa para filtrar ainda mais as linhas selecionadas pelas condições de junção.

As junções podem ser categorizadas como:

  • Junções internas (a operação de junção típica como a que usa algum operador de comparação como = ou <>). Esses incluem junções naturais e junções por igualdade.

    As junções internas usam um operador de comparação para relacionar duas tabelas com base nos valores em colunas comuns de cada tabela. Por exemplo, ao recuperar todas as linhas em que o número de identificação do aluno é o mesmo em ambas as tabelas alunos e cursos.

  • Junções externas. As junções externas pode ser uma junção externa esquerda, direita ou junção externa completa.

    As junções externas são especificadas com um dos seguintes conjuntos de palavras-chave quando elas são especificadas na cláusula FROM:

    • LEFT JOIN ou LEFT OUTER JOIN

      O conjunto de resultados de uma junção externa inclui todas as linhas de uma tabela esquerda especificadas na cláusula LEFT OUTER, não somente aquelas nas quais as colunas unidas se correspondem. Quando uma linha na tabela esquerda não possui linhas correspondentes na tabela direita, a linha associada ao conjunto de resultados conterá valores nulos para todas as colunas da lista de seleção vindos da tabela direita.

    • RIGHT JOIN ou RIGHT OUTER JOIN

      Uma junção externa direita é o oposto de uma junção externa esquerda. São retornadas todas as linhas da tabela direita. São retornados valores nulos para a tabela esquerda sempre que uma tabela direita não possuir alguma linha de correspondência na tabela esquerda.

    • FULL JOIN ou FULL OUTER JOIN

      Uma junção externa completa retorna todas as linhas em ambas as tabelas direita e esquerda. Sempre que uma linha não tiver correspondência com a outra tabela, as colunas da lista de seleção da outra tabela conterão valores nulos. Quando houver correspondência entre as tabelas, todas as linhas do conjunto de resultados conterão valores de dados de tabelas base.

  • Junções cruzadas

    Junções cruzadas retornam todas as linhas da tabela esquerda. Cada linha da tabela esquerda é combinada com todas as linhas da tabela direita. As junções cruzadas também são chamadas de produtos cartesianos.

Por exemplo, aqui está uma junção interna recuperando os funcionários que também são vendedores:

USE AdventureWorks;
GO
SELECT e.EmployeeID
FROM HumanResources.Employee AS e
    INNER JOIN Sales.SalesPerson AS s
    ON e.EmployeeID = s.SalesPersonID

As tabelas ou exibições na cláusula FROM podem ser especificadas em qualquer ordem com uma junção interna ou uma junção externa completa. Entretanto, a ordem de tabelas ou exibições especificadas ao usar uma junção externa direita ou esquerda é importante. Para obter mais informações sobre ordem de tabela com junções externas direita ou esquerda, consulte Usando junções externas.

Para obter mais informações sobre como usar tipos diferentes de junções, consulte os seguintes tópicos: