Associar tabelas e consultas

Observação: Desejamos fornecer o conteúdo da Ajuda mais recente no seu idioma da forma mais rápida possível. Esta página foi traduzida de forma automatizada e pode conter imprecisões ou erros gramaticais. Nosso objetivo é que este conteúdo seja útil para você. No final da página, deixe sua opinião se estas informações foram úteis para você. Aqui está o artigo em inglês para facilitar a referência.

Quando você inclui várias fontes de dados em uma consulta do Access, use junções para limitar os registros que você deseja ver, com base em como as fontes de dados estão relacionadas entre si. Você também pode usar junções para combinar registros de ambas as fontes de dados, para que cada par de registros das fontes se torne um registro nos resultados da consulta.

Este artigo discute os vários tipos de junções e mostra como usá-los em uma consulta. Por padrão, uma junção será criada automaticamente se já houver uma relação entre duas fontes de dados que você usa em uma consulta. Uma junção também é criada se houver campos que se correspondam claramente. Você pode excluir uma junção criada automaticamente. Este artigo fornece informações básicas sobre as relações de tabelas, incluindo como criar uma.

Observação: Você pode participar de consultas da mesma forma que você associa tabelas e também pode ingressar em ambos.

Neste artigo

Visão geral

Tipos de junções

Mostrar linhas onde um valor comum existe nas duas tabelas unidas

Mostrar todas as linhas de uma tabela e as linhas correspondentes da outra tabela

Mostrar todas as linhas de ambas as tabelas e associá-las às quais existe um valor comum

Junções cruzadas

Associar tabelas com base em uma desigualdade de valores de campo

Excluir uma junção

Visão geral

Um banco de dados é uma coleção de tabelas de dados que transportam relações lógicas entre si. Você usa relações para conectar tabelas de acordo com os campos que elas têm em comum. Uma tabela pode fazer parte de qualquer número de relações, mas cada relação sempre tem exatamente duas tabelas. Em uma consulta, uma relação é representada por uma junção.

Quando você adiciona tabelas a uma consulta, o Access cria junções com base em relações que foram definidas entre as tabelas. Você pode criar manualmente junções nas consultas, mesmo se elas não representarem relações que já foram definidas. Se você usar outras consultas (em vez de ou em tabelas) como fontes de dados para uma consulta, poderá criar junções entre as consultas de origem e também entre essas consultas e as tabelas que você usa como fontes de dados.

As junções se comportam de forma semelhante aos critérios de consulta, pois elas estabelecem regras que os dados devem corresponder para serem incluídos nas operações de consulta. Diferentemente de critérios, as junções também especificam que cada par de linhas que satisfaz as condições de junção será combinado no conjunto de registros para formar uma única linha.

Há quatro tipos básicos de junções: junções internas, junções externas, junções cruzadas e junções desiguais. Este artigo explora cada tipo de associação que você pode usar, por que usar cada tipo e como criar as junções.

As junções são consultas sobre o que são as relações para tabelas: uma indicação de como os dados em duas fontes podem ser combinados com base nos valores de dados que têm em comum. Aqui está uma ilustração de uma junção no modo Design da consulta, com as propriedades da junção abertas em uma caixa de diálogo:

A caixa Propriedades da Junção.

Esta linha entre as tabelas representa a junção. Clique duas vezes em uma junção para abrir a caixa de diálogo Propriedades da junção (representada) e revisar ou alterar a junção.

Às vezes, as junções são direcionais. Esta área da caixa de diálogo mostra qual tabela está na junção e quais campos são usados para ingressar nas tabelas.

Esta área determina o tipo de junção: a opção 1 é uma junção interna, 2 é uma junção externa esquerda e 3 é uma junção externa direita.

Os campos de ambas as tabelas podem ser usados, e os dados que pertencem a uma determinada tarefa são exibidos de cada um. Em uma junção interna, nenhum outro dado é incluído. Em uma junção externa, os registros não relacionados de uma tabela também são incluídos nos resultados da consulta.

Início da Página

Tipos de junções

Há quatro tipos básicos de junções: junções internas, junções externas, junções cruzadas e junções desiguais. As junções cruzadas e as junções desiguais são tipos de junção avançados e raramente são usadas, mas você deve saber sobre elas para ter uma compreensão total de como as junções funcionam.

Junções internas: somente dados relacionados de ambas as tabelas combinadas

Uma junção interna é aquela na qual o Access só inclui dados de uma tabela se houver dados correspondentes na tabela relacionada e vice-versa. Na maioria das vezes, você vai usar junções internas. Quando você cria uma junção e não especifica qual é o tipo de junção, o Access pressupõe que você queira uma junção interna. As junções internas são úteis porque permitem combinar dados de duas fontes com base em valores compartilhados, para que você só veja os dados quando houver uma imagem completa.

Junções externas: todos os dados relacionados combinados corretamente, além de todos os registros restantes de uma tabela

Uma junção externa é como uma junção interna, mas adiciona as linhas restantes de uma das tabelas. Junções externas são direcionais: uma junção externa esquerda inclui todos os registros da tabela esquerda – a primeira tabela na junção – e uma junção externa direita inclui todos os registros da tabela à direita – a segunda tabela na junção.

Junções externas completas: todos os dados, combinados onde possível

Em alguns sistemas, uma junção externa pode incluir todas as linhas de ambas as tabelas, com linhas combinadas quando elas correspondem. Isso é chamado de junção externa completa, e o acesso não é compatível explicitamente. No entanto, você pode usar uma junção cruzada e critérios para obter o mesmo efeito.

Junções cruzadas: todos os dados, combinados de todas as maneiras possíveis

Na maioria das vezes, uma junção cruzada é um efeito colateral de adicionar duas tabelas a uma consulta e, em seguida, esquecendo de associá-las. O Access interpreta isso para significar que você deseja ver cada registro de uma tabela combinada com cada registro da outra tabela – todas as combinações possíveis de registros. Como nenhum dado pode ser combinado, esse tipo de junção raramente produz resultados úteis. Mas há alguns casos em que uma junção cruzada é exatamente o que você precisa.

Junções desiguais: como uma junção regular, mas usar uma comparação diferente para combinar linhas

Associações diferentes usam uma operadora diferente do sinal de igual (=) para comparar valores e determinar se e como combinar os dados. Associações diferentes não são suportadas explicitamente, mas você pode usar uma junção cruzada e critérios para obter o mesmo efeito.

Mostrar linhas onde um valor comum existe nas duas tabelas unidas

Se você quiser mostrar somente as linhas que têm valores correspondentes no campo associado, use uma junção interna. O Access cria junções internas automaticamente.

As junções internas são o tipo de junção mais comum. Eles dizem uma consulta que as linhas de uma das tabelas unidas correspondem às linhas na outra tabela, na base dos dados dos campos associados. Quando uma consulta com uma junção interna é executada, somente as linhas em que um valor comum existe nas duas tabelas associadas serão incluídas nas operações de consulta.

Como faço para usar uma junção interna?

Na maioria das vezes, não é necessário fazer nada para usar uma junção interna. Se as tabelas que você adicionar a uma consulta já tiverem relações, o Access criará automaticamente uma junção interna entre cada par de tabelas relacionadas, quando você adicionar as tabelas. Se a integridade referencial é imposta, o Access também exibe um "1" acima da linha da junção para mostrar qual tabela está no lado "um" de uma relação um-para-muitos e um símbolo de infinito () para mostrar qual tabela está no lado "muitos".

Mesmo que você não tenha criado relações, o Access criará automaticamente junções internas se você adicionar duas tabelas a uma consulta e essas tabelas tiverem um campo com um tipo de dados igual ou compatível e um dos campos de junção for um chave primária. Os símbolos "um" e "muitos" não são exibidos nesse caso, pois a integridade referencial não é imposta.

Se você adicionar consultas à sua consulta e não tiver criado relações entre essas consultas, o Access não criará automaticamente junções internas entre essas consultas ou entre consultas e tabelas. Geralmente, você deve criá-las. Crie uma junção interna arrastando um campo de uma fonte de dados para um campo em outra fonte de dados. O Access exibe uma linha entre os dois campos para mostrar que uma junção foi criada.

Sintaxe SQL de uma junção interna

As junções internas são especificadas no SQL na cláusula FROM, conforme mostrado abaixo:

FROM tabela1 INNER JOIN tabela2 ON tabela1.o tabela2 de comparação de campo1.campo2

A operação INNER JOIN tem estas partes:

Parte

Descrição

tabela1, tabela2

Os nomes das tabelas das quais os registros são combinados.

campo1, campo2

Os nomes dos campos que são unidos. Se não forem numéricos, os campos deverão ser do mesmo tipo de dados e conter dados da mesma natureza, mas não precisam ter o mesmo nome.

comparar

Qualquer operador de comparação relacional: "=", "<", ">", "<=", ">=" ou "<>".

Para obter mais informações sobre a sintaxe de junção interna, consulte o tópico operação interna de junção.

Início da Página

Mostrar todas as linhas de uma tabela e as linhas correspondentes da outra tabela

Junções externas instruem uma consulta que, embora algumas das linhas em ambos os lados da junção correspondam exatamente, a consulta deve incluir todas as linhas de uma tabela e também as linhas da outra tabela que compartilham um valor comum em ambos os lados da junção.

As junções externas podem ser junções externas restantes ou podem ser junções externas à direita. Em uma junção externa esquerda, a consulta inclui todas as linhas da primeira tabela na cláusula da instrução SQL de e somente as linhas da outra tabela onde o campo de associação contém valores comuns a ambas as tabelas. Em uma junção externa direita, a consulta inclui todas as linhas da segunda tabela na cláusula da instrução SQL de e somente as linhas da outra tabela onde o campo de associação contém valores comuns a ambas as tabelas.

Observação: Você pode saber facilmente qual tabela é a tabela esquerda ou a tabela direita em uma determinada junção clicando duas vezes na junção e, em seguida, procurando na caixa de diálogo Propriedades da junção . Você também pode alternar para o modo SQL e, em seguida, examinar a cláusula FROM.

Como algumas das linhas de um lado de uma junção externa não terão linhas correspondentes da outra tabela, alguns dos campos retornados nos resultados da consulta dessa outra tabela ficarão vazios quando as linhas não corresponderem.

Como faço para usar uma junção externa?

Você cria uma junção externa modificando uma junção interna existente. Se não houver uma junção interna, crie uma e altere-a para uma junção externa.

Alterar uma junção interna para uma junção externa

  1. No modo Design da consulta, clique duas vezes na junção que você deseja alterar.

    A caixa de diálogo Propriedades da Junção aparece.

  2. Na caixa de diálogo Propriedades da junção , observe as opções listadas ao lado da opção 2 e da opção 3.

  3. Clique na opção que você deseja usar e clique em OK.

  4. O Access exibe a junção e mostra uma seta que aponta da fonte de dados, onde todas as linhas serão incluídas na fonte de dados, onde somente as linhas que satisfaçam a condição de junção serão incluídas.

Junções externas ambíguas

Se você criar uma consulta que contenha uma junção à esquerda e uma junção interna, o acesso pode não conseguir determinar qual operação de associação executar primeiro. Como os resultados são diferentes dependendo se a junção à esquerda ou a junção interna são executadas primeiro, o Access exibe uma mensagem de erro:

Para corrigir esse erro, você deve modificar a consulta para que esteja claro qual junção executar primeiro.

Sintaxe SQL de uma junção externa

As junções externas são especificadas no SQL na cláusula FROM, conforme mostrado abaixo:

FROM tabela1 [Left | Right] Join tabela2
em Tabela1. campo1 Compare tabela2. campo2

As operações LEFT JOIN e RIGHT JOIN têm estas partes:

Parte

Descrição

tabela1, tabela2

Os nomes das tabelas das quais os registros são combinados.

campo1, campo2

Os nomes dos campos que são unidos. Os campos devem ser do mesmo tipo de dados e conter dados da mesma natureza, mas não precisam ter o mesmo nome.

comparar

Qualquer operador de comparação relacional: "=", "<", ">", "<=", ">=" ou "<>".

Para obter mais informações sobre a sintaxe de junção externa, consulte o tópico junção à esquerda, operações de junção à direita.

Início da Página

Mostrar todas as linhas de ambas as tabelas e associá-las às quais existe um valor comum

Quando quiser mostrar todas as linhas de duas tabelas e associá-las com base em valores comuns, use uma junção externa completa. O Access não oferece suporte explícito a junções externas completas, mas você pode obter o mesmo efeito usando uma consulta União. O procedimento a seguir explica como fazer isso, mas se você quiser mais informações sobre as consultas União, consulte a seção Consulte também .

Para usar uma consulta União para executar uma junção externa completa:

  1. Crie uma consulta que tenha uma junção externa esquerda no campo que você deseja usar para uma junção externa completa.

  2. Na guia Página Inicial, no grupo Modos de Exibição, clique em Modo de Exibição e clique em Modo SQL.

  3. Pressione CTRL + C para copiar o código SQL.

  4. Exclua o ponto-e-vírgula no final da cláusula FROM e pressione ENTER.

  5. Digite UNION e pressione Enter.

    Observação: Não use a palavra-chave ALL quando usar uma consulta União para executar uma junção externa completa.

  6. Pressione CTRL + V para colar o código SQL que você copiou na etapa 3.

  7. No código que você colou, altere junção à esquerda para junção à direita.

  8. Exclua o ponto-e-vírgula no final da segunda cláusula FROM e pressione ENTER.

  9. Adicione uma cláusula WHERE que especifique que o valor do campo de junção é nulo na primeira tabela listada na cláusula FROM (a tabela esquerda).

    Por exemplo, se a cláusula FROM for:

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Você adicionaria a seguinte cláusula WHERE:

    WHERE Products.ID IS NULL

  10. Digite um ponto e vírgula (;) no final da cláusula WHERE para indicar o final da consulta União.

  11. Na guia Design, no grupo Resultados, clique em Executar.

Junções cruzadas

As junções cruzadas são diferentes das junções internas e externas, pois elas não são explicitamente representadas no Access. Em uma junção cruzada, cada linha de uma tabela é combinada com cada linha de outra tabela, resultando em o que é chamado de produto cruzado ou um produto cartesiano. Sempre que você executa uma consulta que contém tabelas que não são explicitamente Unidas, um produto cruzado é o resultado. Junções cruzadas geralmente são não intencionales, mas há casos em que elas podem ser úteis.

Por que eu usaria uma junção cruzada?

Se você quiser examinar todas as combinações possíveis de linhas entre duas tabelas ou consultas, use uma junção cruzada. Por exemplo, suponha que sua empresa tenha tido um ano espetacular, e você está considerando dar reembolsos aos seus clientes. Você pode criar uma consulta que soma as compras de cada cliente, criar uma pequena tabela com várias porcentagens de reembolso possíveis e combinar as duas em outra consulta que executa uma junção cruzada. Você acaba com uma consulta que exibe um conjunto de reembolsos hipotéticos para cada cliente.

Como faço para usar uma junção cruzada?

Uma junção cruzada é produzida sempre que você inclui tabelas ou consultas em sua consulta e não cria pelo menos uma junção explícita para cada tabela ou consulta. O Access combina cada linha de cada tabela ou consulta que não tenha ingressado explicitamente em nenhuma outra tabela ou consulta para cada linha dos resultados. Considere o cenário de reembolso do parágrafo anterior. Suponha que você tenha clientes do 91 e queira ver cinco possíveis porcentagens de reembolso. Sua junção cruzada produz 455 linhas (o produto de 91 e 5).

Como você pode imaginar, as junções cruzadas não intencionales podem criar enormes números de linhas nos resultados da consulta. Além disso, esses resultados geralmente não têm significado, porque se você não pretende realmente combinar todas as linhas com todas as outras linhas, a maioria das linhas combinadas que aparecem nos resultados não fará sentido. Por fim, as consultas que usam Junções cruzadas não intencional podem levar muito tempo para serem executadas.

Associação cruzada não intencional no modo Design

1. os campos circulados devem participar uns dos outros.

Produto cruzado não intencional

1. Observe o número muito grande de registros.

O resultado corrigido da consulta

1. Observe que o número de registros é muito menor.

Início da Página

Associar tabelas com base em uma desigualdade de valores de campo

As junções não precisam se basear na equivalência dos campos associados. Uma junção pode ser baseada em qualquer operador de comparação, como maior que (>), menor que (<) ou não é igual a (<>). As junções que não são baseadas na equivalência são chamadas unequals Joins.

Se você quiser combinar as linhas de duas fontes de dados com base em valores de campo que não sejam iguais, use uma junção desigual. Normalmente, as junções desiguais se baseiam no maior que (>), menor que (<), maior ou igual a (> =) ou menor que ou igual a (< =) operadores de comparação. As junções desiguais que se baseiam no operador não igual (<>) podem retornar quase quantas linhas quantas Junções cruzadas, e os resultados podem ser difíceis de interpretar.

Como faço para usar uma junção desigual?

Não há suporte para junções diferentes no modo de exibição Design. Se quiser usá-los, você deve fazê-lo usando o modo SQL. No entanto, você pode criar uma junção no modo Design, alternar para modo SQL, localizar o operador de comparação igual (=) e alterá-lo para o operador que você deseja usar. Depois de fazer isso, você só poderá abrir a consulta no modo Design se alterar o operador de comparação novamente para igual a (=) no modo SQL.

Excluir uma junção

Se o Access criar automaticamente uma junção que você não quer, ou se você criar uma junção por engano, por exemplo, uma junção entre dois campos que têm tipos de dados diferentes, você pode excluir a junção.

  1. Na grade de design da consulta, clique na junção que você deseja remover.

  2. Pressione delete.

-ou-

  • Na grade de design da consulta, clique com o botão direito do mouse na junção que você deseja remover e, em seguida, clique em excluir.

Início da Página

Consulte Também

Adicionar registros a uma tabela usando uma consulta acréscimo

Combinar os resultados de várias consultas seleção usando uma consulta União

Criar uma consulta baseada em várias tabelas

Criar, editar ou excluir uma relação

Expanda suas habilidades no Office
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Office Insider

Essas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×