Como criar junções externas (Visual Database Tools)

Por padrão, o Designer de Consulta e Exibição cria uma junção interna entre tabelas. Junções internas eliminam as linhas que não correspondem a uma linha da outra tabela. Entretanto, junções externas retornam todas as linhas de pelo menos uma das tabelas ou exibições mencionadas na cláusula FROM, contanto que essas linhas atendam algum critério de pesquisa WHERE ou HAVING. Se você quiser incluir linhas de dados no conjunto de resultados que não tenha uma correspondência na tabela unida, será possível criar uma junção externa.

Quando você criar uma junção externa, a ordem em que as tabelas aparecem na instrução SQL (como refletido no painel SQL) é significante. A primeira tabela que você adiciona se torna a tabela "esquerda" e a segunda se torna a tabela "direita." (A ordem real em que as tabelas aparecem no painel Diagrama não é significante.) Quando você especificar uma junção externa esquerda ou direita, você está se referindo à ordem na qual as tabelas foram adicionadas à consulta e à ordem na qual elas aparecem na instrução SQL no painel SQL.

Para criar uma junção externa

  1. Crie a junção, automática ou manualmente. Para obter detalhes, consulte Como unir tabelas automaticamente (Visual Database Tools) ou Como unir tabelas manualmente (Visual Database Tools).

  2. Selecione a linha de junção no painel Diagrama e, depois, no menu Designer de Consulta, escolha Selecionar Todas as Linhas de <tablename>, selecionando o comando que inclui a tabela com as linhas extras que você deseja incluir.

    • Escolha a primeira tabela para criar uma junção externa esquerda.

    • Escolha a segunda tabela para criar uma junção externa direita.

    • Escolha ambas as tabelas para criar uma junção externa completa.

Quando você especificar uma junção externa, o Designer de Consulta e Exibição modificará a linha de junção para indicar uma junção externa.

Além disso, o Designer de Consulta e Exibição modifica a instrução SQL no painel SQL para refletir a mudança em tipo de junção, conforme mostrado na seguinte instrução:

SELECT employee.job_id, employee.emp_id,
   employee.fname, employee.minit, jobs.job_desc
FROM employee LEFT OUTER JOIN jobs ON 
    employee.job_id = jobs.job_id

Como uma junção externa inclui linhas não-correspondentes, você pode usá-la para encontrar linhas que violam as restrições de chave estrangeira. Para fazer isso, crie uma junção externa e, depois, adicione um critério de pesquisa para encontrar linhas em que a coluna de chave primária da tabela mais à direita seja nula. Por exemplo, a seguinte junção externa encontra linhas na tabela employee que não têm linhas correspondentes na tabela jobs:

SELECT employee.emp_id, employee.job_id
FROM employee LEFT OUTER JOIN jobs 
   ON employee.job_id = jobs.job_id
WHERE (jobs.job_id IS NULL)