Applies ToAccess para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Quando você inclui várias fontes de dados em uma consulta do Access, usa junções para limitar os registros que deseja ver, com base em como as fontes de dados estão relacionadas entre si. Você também usa 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á-las 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 será criada se houver campos que correspondam claramente um ao outro. Você pode excluir uma junção criada automaticamente. Este artigo fornece informações básicas sobre relações de tabela, incluindo como criar uma.

Observação: Você pode ingressar em consultas da mesma forma que ingressa em tabelas e também pode ingressar em ambas.

Neste artigo

Visão Geral

Um banco de dados é uma coleção de tabelas de dados que têm relações lógicas entre si. Você usa relações para conectar tabelas por campos que elas têm em comum. Uma tabela pode fazer parte de qualquer número de relacionamentos, 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, Access cria junções baseadas em relações definidas entre as tabelas. Você pode criar ingressamentos manualmente em consultas, mesmo que elas não representem relações que já foram definidas. Se você usar outras consultas (em vez de ou além de tabelas) como fontes de dados para uma consulta, poderá criar junções entre as consultas de origem e também entre essas consultas e quaisquer tabelas que você usar como fontes de dados.

As junções se comportam de forma semelhante aos critérios de consulta na medida em que estabelecem regras que os dados devem corresponder para serem incluídos nas operações de consulta. Ao contrário dos critérios, as junções também especificam que cada par de linhas que satisfaçam as condições de junção serão combinadas 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 junção que você pode usar, por que você usa cada tipo e como criar as junções.

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

A caixa Propriedades da Junção.

Essa linha entre as tabelas representa a junção. Clique duas vezes em uma junção para abrir a caixa de diálogo Ingressar Propriedades (representada) e examine ou altere a junção.

As junções às vezes são direcionais. Essa área da caixa de diálogo mostra qual tabela é qual na junção e quais campos são usados para ingressar nas tabelas.

Essa á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.

Campos de ambas as tabelas podem ser usados e os dados que pertencem a uma determinada tarefa são exibidos de cada uma delas. Em uma junção interna, nenhum outro dado está incluído. Em uma junção externa, 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. Junções cruzadas e junções desiguais são tipos avançados de junção e raramente são usadas, mas você deve saber sobre elas para ter uma compreensão completa de como as junções funcionam.

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

Uma junção interna é aquela em que o Access inclui apenas dados de uma tabela se houver dados correspondentes na tabela relacionada e vice-versa. Na maioria das vezes, você usará junções internas. Quando você cria uma junção e não especifica qual tipo de junção é, o Access pressupõe que você deseja uma junção interna. As junções internas são úteis porque permitem combinar dados de duas fontes com base em valores compartilhados, portanto, você só vê dados quando há 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. As 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 quando viáveis

Em alguns sistemas, uma junção externa pode incluir todas as linhas de ambas as tabelas, com linhas combinadas quando correspondem. Isso é chamado de junção externa completa e o Access não dá suporte explicitamente a eles. 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 formas possíveis

Na maioria das vezes, uma junção cruzada é um efeito colateral de adicionar duas tabelas a uma consulta e, em seguida, esquecer de juntá-las. O access interpreta isso para significar que você deseja ver todos os registros de uma tabela combinados 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 usando uma comparação diferente para combinar linhas

Junções desiguais usam um operador diferente do sinal igual (=) para comparar valores e determinar se e como combinar os dados. Não há suporte para junções desiguais, mas você pode usar uma junção cruzada e critérios para obter o mesmo efeito.

Mostrar linhas em que existe um valor comum em ambas as tabelas unidas

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

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

Como fazer usar uma junção interna?

Na maioria das vezes, você não precisa 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 ao 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 cria automaticamente junções internas se você adicionar duas tabelas a uma consulta e essas tabelas tiverem um campo com o mesmo tipo de dados 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 à 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á-los por conta própria. Você cria 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 para 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.field1 compare table2.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 DE JUNÇÃO INTERNA.

Início da Página

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

As junções externas dizem a 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 à esquerda 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 FROM da instrução SQL e apenas as linhas da outra tabela em que o campo de junçã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 FROM da instrução SQL e apenas as linhas da outra tabela em que o campo de junção contém valores comuns a ambas as tabelas.

Observação: Você pode facilmente dizer qual tabela é a tabela esquerda ou a tabela direita em uma determinada junção clicando duas vezes na junção e, em seguida, olhando na caixa de diálogo Propriedades de Junção . Você também pode alternar para o modo de exibição SQL e 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 na consulta resultam dessa outra tabela estarão vazios quando as linhas não corresponderem.

Como fazer usar uma junção externa?

Você cria uma junção externa modificando uma junção interna existente. Se nenhuma junção interna existir, você criará uma e, em seguida, alterá-la para uma junção externa.

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

  1. Na exibição Design de 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 de 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 em que todas as linhas serão incluídas na fonte de dados em que somente as linhas que atendem à condição de junção serão incluídas.

Junções externas ambíguas

Se você criar uma consulta que contenha um JOIN LEFT e um JOIN INTERNO, o Access poderá não ser capaz de determinar qual operação de junção executar primeiro. Como os resultados são diferentes dependendo se a junção à esquerda ou a junção interna é executada primeiro, o Access exibe uma mensagem de erro:

Para corrigir esse erro, você deve modificar a consulta para que ela fique clara de qual junção será executada primeiro.

Sintaxe SQL para uma junção externa

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

FROM table1 [ LEFT | RIGHT ] TABELA JOIN2ON table1.field1 compare table2.field2

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 LEFT JOIN, RIGHT JOIN Operations.

Início da Página

Mostrar todas as linhas de ambas as tabelas e juntá-las onde existe um valor comum

Quando você deseja mostrar todas as linhas de duas tabelas e juntá-las com base em valores comuns, você usa uma junção externa completa. O acesso não dá suporte explicitamente a junções externas completas, mas você pode obter o mesmo efeito usando uma consulta sindical. O procedimento a seguir explica como fazer isso, mas se você quiser mais informações sobre consultas sindicais, consulte a seção Consulte Também .

Para usar uma consulta sindical 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 o ALL palavra-chave quando você usa uma consulta sindical para executar uma junção externa completa.

  6. Pressione CTRL+V para colar o código SQL copiado na etapa 3.

  7. No código colado, 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 especifica que o valor do campo de junção é NULL 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 fim da consulta sindical.

  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, na qual não são representadas explicitamente no Access. Em uma junção cruzada, cada linha de uma tabela é combinada com cada linha de outra tabela, resultando no que é chamado de produto cruzado ou um produto Cartesiano. Sempre que você executa uma consulta que tem tabelas que não estão explicitamente ingressadas, um produto cruzado é o resultado. As junções cruzadas geralmente não são intencionais, mas há casos em que 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 teve um ano espetacular, e você está considerando dar descontos aos seus clientes. Você pode criar uma consulta que soma as compras de cada cliente, criar uma pequena tabela com vários percentuais de desconto possíveis e combinar os dois em outra consulta que executa uma junção cruzada. Você acaba com uma consulta que exibe um conjunto de descontos hipotéticos para cada cliente.

Como fazer 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 todas as linhas de cada tabela ou consulta que não estão explicitamente unidas a qualquer outra tabela ou consulta a todas as outras linhas nos resultados. Considere o cenário de desconto do parágrafo anterior. Suponha que você tenha 91 clientes e que deseja examinar cinco percentuais de desconto possíveis. Sua junção cruzada produz 455 linhas (o produto de 91 e 5).

Como você pode imaginar, junções cruzadas não intencionais podem criar um grande número de linhas em seus resultados de consulta. Além disso, esses resultados geralmente não têm sentido, porque se você não pretende 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 intencionais podem levar muito tempo para serem executadas.

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

1. Os campos em círculo devem ser unidos uns aos 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

Unir tabelas com base em uma desigualdade de valores de campo

As junções não precisam ser baseadas na equivalência dos campos ingressados. 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 se baseiam na equivalência são chamadas de junções desiguais.

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

Como fazer usar uma junção desigual?

Não há suporte para junções desiguais no modo design. Se você deseja usá-los, você deve fazê-lo usando o modo de exibição SQL. No entanto, você pode criar uma junção no modo design, alternar para exibição 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 novamente se alterar primeiro o operador de comparação de volta para igual (=) na exibição SQL.

Excluir uma junção

Se o Access criar automaticamente uma junção que você não deseja 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ê poderá 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 clique em Excluir.

Início da Página

Adicionar registros a uma tabela usando uma consulta de anexo

Combine os resultados de várias consultas selecionadas usando uma consulta sindical

Crie uma consulta com base em várias tabelas

Crie, edite ou exclua uma relação

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.