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

Quando inclui várias origens de dados numa consulta do Access, utiliza associações para limitar os registos que pretende ver, com base na forma como as origens de dados estão relacionadas entre si. Também utiliza associações para combinar registos de ambas as origens de dados, para que cada par de registos das origens se torne um registo nos resultados da consulta.

Este artigo aborda os vários tipos de associações e mostra-lhe como utilizá-las numa consulta. Por predefinição, é criada automaticamente uma associação se já existir uma relação entre duas origens de dados que utiliza numa consulta. Também é criada uma associação se existirem campos que correspondam claramente uns aos outros. Pode eliminar uma associação criada automaticamente. Este artigo fornece informações básicas sobre relações de tabela, incluindo como criar uma.

Nota: Pode associar consultas da mesma forma que associa tabelas e também pode associar ambas.

Neste artigo

Descrição geral

Uma base de dados é uma coleção de tabelas de dados que suportam relações lógicas entre si. Pode utilizar relações para ligar tabelas por campos que têm em comum. Uma tabela pode fazer parte de qualquer número de relações, mas cada relação tem sempre exatamente duas tabelas. Numa consulta, uma relação é representada por uma associação.

Quando adiciona tabelas a uma consulta, Access cria associações baseadas em relações que foram definidas entre as tabelas. Pode criar associações manualmente em consultas, mesmo que não representem relações que já tenham sido definidas. Se utilizar outras consultas (em vez de ou além de tabelas) como origens de dados para uma consulta, pode criar associações entre as consultas de origem e também entre essas consultas e quaisquer tabelas que utilize como origens de dados.

As associações comportam-se de forma semelhante aos critérios de consulta na medida em que estabelecem regras que os dados têm de corresponder para serem incluídos nas operações de consulta. Ao contrário dos critérios, as associações também especificam que cada par de linhas que satisfazem as condições de associação será combinado no conjunto de registos para formar uma única linha.

Existem quatro tipos básicos de associações: associações internas, associações externas, associações cruzadas e associações desiguais. Este artigo explora cada tipo de associação que pode utilizar, por que motivo utiliza cada tipo e como criar as associações.

As associações são para consultar as relações que são com as tabelas: uma indicação de como os dados em duas origens podem ser combinados com base nos valores de dados que têm em comum. Eis uma ilustração de uma associação na Vista de Estrutura da consulta, com as propriedades da associação abertas numa caixa de diálogo:

A caixa de diálogo das Propriedades de Associação.

Esta linha entre as tabelas representa a associação. Faça duplo clique numa associação para abrir a caixa de diálogo Propriedades da Associação (ilustrada) e rever ou alterar a associação.

Por vezes, as associações são direcionais. Esta área da caixa de diálogo mostra-lhe qual é a tabela na associação e que campos são utilizados para associar as tabelas.

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

Os campos de ambas as tabelas podem ser utilizados e os dados relativos a uma determinada tarefa são apresentados de cada uma. Numa associação interna, não são incluídos outros dados. Numa associação externa, os registos não relacionados de uma tabela também são incluídos nos resultados da consulta.

Início da Página

Tipos de associações

Existem quatro tipos básicos de associações: associações internas, associações externas, associações cruzadas e associações desiguais. Associações cruzadas e associações desiguais são tipos de associação avançadas e raramente são utilizados, mas deve saber sobre eles para ter uma compreensão completa de como as associações funcionam.

Associações internas: apenas dados relacionados de ambas as tabelas combinadas

Uma associação interna é aquela em que o Access só inclui dados de uma tabela se existirem dados correspondentes na tabela relacionada e vice-versa. Na maioria das vezes, irá utilizar associações internas. Quando cria uma associação e não especifica que tipo de associação é, o Access assume que pretende uma associação interna. As associações internas são úteis porque permitem combinar dados de duas origens com base em valores partilhados, pelo que só vê dados quando existe uma imagem completa.

Associações externas: todos os dados relacionados combinados corretamente, bem como todos os restantes registos de uma tabela

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

Associações externas completas: todos os dados, combinados sempre que possível

Em alguns sistemas, uma associação externa pode incluir todas as linhas de ambas as tabelas, com linhas combinadas quando correspondem. Isto chama-se associação externa completa e o Access não as suporta explicitamente. No entanto, pode utilizar uma associação cruzada e critérios para obter o mesmo efeito.

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

Na maioria das vezes, uma associação cruzada é um efeito colateral de adicionar duas tabelas a uma consulta e, em seguida, esquecer-se de as associar. O Access interpreta isto para significar que pretende ver todos os registos de uma tabela combinados com todos os registos da outra tabela – todas as combinações possíveis de registos. Uma vez que não é possível combinar dados, este tipo de associação raramente produz resultados úteis. Mas há alguns casos em que uma associação cruzada é exatamente o que você precisa.

Associações desiguais: como uma associação regular, mas com uma comparação diferente para combinar linhas

As associações desiguais utilizam um operador diferente do sinal de igual (=) para comparar valores e determinar se e como combinar os dados. As associações desiguais não são explicitamente suportadas, mas pode utilizar uma associação cruzada e critérios para obter o mesmo efeito.

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

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

As associações internas são o tipo de associação mais comum. Indicam a uma consulta que as linhas de uma das tabelas associadas correspondem a linhas na outra tabela, com base nos dados nos campos associados. Quando uma consulta com uma associação interna é executada, apenas as linhas em que existe um valor comum em ambas as tabelas associadas serão incluídas nas operações de consulta.

Como devo proceder para utilizar uma associação interna?

Na maioria das vezes, não precisa de fazer nada para utilizar uma associação interna. Se as tabelas que adicionar a uma consulta já tiverem relações, o Access cria automaticamente uma associação interna entre cada par de tabelas relacionadas quando adiciona as tabelas. Se a integridade referencial for imposta, o Access apresentará também um "1" acima da linha de associação para mostrar que tabela está no lado "um" de uma relação um-para-muitos e um símbolo de infinito () para mostrar que tabela está no lado "muitos".

Mesmo que não tenha criado relações, o Access cria automaticamente associações internas se adicionar duas tabelas a uma consulta e essas tabelas tiverem um campo com o mesmo tipo de dados ou um dos campos de associação é um chave primária. Os símbolos "um" e "muitos" não são apresentados neste caso, porque a integridade referencial não é imposta.

Se adicionar consultas à consulta e não tiver criado relações entre essas consultas, o Access não cria automaticamente associações internas entre essas consultas ou entre consultas e tabelas. Geralmente, deve criá-los manualmente. Pode criar uma associação interna ao arrastar um campo de uma origem de dados para um campo noutra origem de dados. O Access apresenta uma linha entre os dois campos para mostrar que foi criada uma associação.

Sintaxe SQL para uma associação interna

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

FROM table1 INNER JOIN table2 ON table1.campo1 comparar tabela2.campo2

A operação INNER JOIN tem as seguintes partes:

Parte

Descrição

tabela1, tabela2

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

campo1, campo2

Os nomes dos campos que estão associados. Se não forem numéricos, os campos têm de ter o mesmo tipo de dados mas não necessitam de ter o mesmo nome.

comparar

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

Para obter mais informações sobre a sintaxe de associação interna, veja o tópico Operação INNER JOIN.

Início da Página

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

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

As associações externas podem ser associações externas à esquerda ou podem ser associações externas à direita. Numa associaçã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 onde o campo de associação contém valores comuns a ambas as tabelas. Numa associaçã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 onde o campo de associação contém valores comuns a ambas as tabelas.

Nota: Pode saber facilmente qual é a tabela à esquerda ou a tabela direita numa determinada associação ao fazer duplo clique na associação e, em seguida, ao procurar na caixa de diálogo Propriedades da Associação. Também pode mudar para a vista SQL e, em seguida, examinar a cláusula FROM.

Uma vez que algumas das linhas de um lado de uma associação externa não terão linhas correspondentes da outra tabela, alguns dos campos devolvidos nos resultados da consulta dessa outra tabela estarão vazios quando as linhas não corresponderem.

Como devo proceder para utilizar uma associação externa?

Pode criar uma associação externa ao modificar uma associação interna existente. Se não existir nenhuma associação interna, crie uma e, em seguida, altere-a para uma associação externa.

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

  1. Na vista Estrutura da consulta, faça duplo clique na associação que pretende alterar.

    A caixa de diálogo Propriedades da Associação é apresentada.

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

  3. Clique na opção que pretende utilizar e, em seguida, clique em OK.

  4. O Access apresenta a associação e mostra uma seta que aponta da origem de dados onde todas as linhas serão incluídas na origem de dados onde apenas serão incluídas as linhas que satisfazem a condição de associação.

Associações externas ambíguas

Se criar uma consulta que contenha LEFT JOIN e INNER JOIN, o Access poderá não conseguir determinar qual a operação de associação a executar primeiro. Uma vez que os resultados são diferentes consoante a associação à esquerda ou a associação interna seja executada primeiro, o Access apresenta uma mensagem de erro:

Para corrigir este erro, tem de modificar a consulta para que fique claro qual a associação a executar primeiro.

Sintaxe SQL para uma associação externa

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

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 compare table2.field2

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

Parte

Descrição

tabela1, tabela2

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

campo1, campo2

Os nomes dos campos que são associados. Os campos têm de ter o mesmo tipo de dados mas não necessitam de ter o mesmo nome.

comparar

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

Para obter mais informações sobre a sintaxe de associação externa, veja o tópico LEFT JOIN, Right JOIN Operations (Operações LEFT JOIN, RIGHT JOIN).

Início da Página

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

Quando quiser mostrar todas as linhas de duas tabelas e associá-las com base em valores comuns, utilize uma associação externa completa. O Access não suporta explicitamente associações externas completas, mas pode obter o mesmo efeito através de uma consulta união. O procedimento seguinte explica como fazê-lo, mas se quiser obter mais informações sobre consultas união, consulte a secção Consulte Também .

Para utilizar uma consulta união para efetuar uma associação externa completa:

  1. Crie uma consulta que tenha uma associação externa à esquerda no campo que pretende utilizar para uma associação externa completa.

  2. No separador Base, no grupo Vistas, clique em Vista e, em seguida, clique em Vista de SQL.

  3. Prima Ctrl+C para copiar o código SQL.

  4. Elimine o ponto e vírgula no final da cláusula FROM e, em seguida, prima ENTER.

  5. Escreva UNION e prima ENTER.

    Nota: Não utilize a palavra-chave ALL quando utilizar uma consulta união para efetuar uma associação externa completa.

  6. Prima CTRL+V para colar o código SQL que copiou no passo 3.

  7. No código que colou, altere LEFT JOIN para RIGHT JOIN.

  8. Elimine o ponto e vírgula no final da segunda cláusula FROM e, em seguida, prima ENTER.

  9. Adicione uma cláusula WHERE que especifica que o valor do campo de associaçã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]

    Adicionaria a seguinte cláusula WHERE:

    WHERE Products.ID IS NULL

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

  11. No separador Estrutura, no grupo Resultados, clique em Executar.

Associações cruzadas

As associações cruzadas são diferentes das associações internas e externas na qual não são representadas explicitamente no Access. Numa associação cruzada, cada linha de uma tabela é combinada com cada linha de outra tabela, o que resulta naquilo a que se chama um produto cruzado ou um produto cartesiano. Sempre que executar uma consulta que tenha tabelas que não estão explicitamente associadas, um produto cruzado é o resultado. Normalmente, as associações cruzadas não são intencionais, mas há casos em que podem ser úteis.

Por que motivo utilizaria uma associação cruzada?

Se quiser examinar todas as combinações possíveis de linhas entre duas tabelas ou consultas, utilize uma associação cruzada. Por exemplo, suponha que a sua empresa teve um ano espetacular e está a considerar dar descontos aos seus clientes. Pode criar uma consulta que soma as compras de cada cliente, criar uma pequena tabela que tenha várias percentagens de desconto possíveis e combinar as duas noutra consulta que efetue uma associação cruzada. Acaba com uma consulta que apresenta um conjunto de descontos hipotéticos para cada cliente.

Como devo proceder para utilizar uma associação cruzada?

É produzida uma associação cruzada sempre que incluir tabelas ou consultas na consulta e não criar pelo menos uma associação explícita para cada tabela ou consulta. O Access combina todas as linhas de cada tabela ou consulta que não está explicitamente associada a qualquer outra tabela ou consulta a todas as outras linhas nos resultados. Considere o cenário de desconto do parágrafo anterior. Imagine que tem 91 clientes e que pretende analisar cinco percentagens de desconto possíveis. A associação cruzada produz 455 linhas (o produto de 91 e 5).

Como pode imaginar, as associações cruzadas não intencionais podem criar um grande número de linhas nos resultados da consulta. Além disso, estes resultados são geralmente insignificantes, porque se não pretender 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 utilizam associações cruzadas não intencionais podem demorar muito tempo a ser executadas.

Associação cruzada não intencional na Vista de estrutura da consulta

1. Os campos em círculo devem ser associados entre si.

Produto cruzado não intencional

1. Tenha em atenção o grande número de registos.

O resultado corrigido da consulta

1. Tenha em atenção que o número de registos é muito menor.

Início da Página

Associar tabelas com base numa desigualdade de valores de campo

As associações não têm de ser baseadas na equivalência dos campos associados. Uma associação pode basear-se em qualquer operador de comparação, como maior que (>), menor que (<) ou não é igual (<>). As associações que não se baseiam na equivalência são denominadas associações desiguais.

Se quiser combinar as linhas de duas origens de dados com base em valores de campo que não são iguais, utilize uma associação desigual. Normalmente, as associações desiguais baseiam-se nos operadores de comparação maior que (>), menor que (<), maior ou igual a (>=) ou menor ou igual a (<=). As associações desiguais baseadas no operador não é igual (<>) podem devolver quase tantas linhas como associações cruzadas e os resultados podem ser difíceis de interpretar.

Como devo proceder para utilizar uma associação desigual?

As associações desiguais não são suportadas na vista Estrutura. Se pretender utilizá-las, tem de o fazer através da vista SQL. No entanto, pode criar uma associação na vista Estrutura, mudar para a vista SQL, localizar o operador de comparação de igual (=) e alterá-lo para o operador que pretende utilizar. Depois de o fazer, só poderá abrir novamente a consulta na vista Estrutura se alterar primeiro o operador de comparação novamente para igual (=) na vista SQL.

Eliminar uma associação

Se o Access criar automaticamente uma associação que não pretende ou se criar uma associação por engano ( por exemplo, uma associação entre dois campos com tipos de dados diferentes ), pode eliminar a associação.

  1. Na grelha de estrutura da consulta, clique na associação que pretende remover.

  2. Prima DELETE.

-ou-

  • Na grelha de estrutura da consulta, clique com o botão direito do rato na associação que pretende remover e, em seguida, clique em Eliminar.

Início da Página

Adicionar registos a uma tabela através de uma consulta de acréscimo

Combine os resultados de várias consultas selecionar ao utilizar uma consulta união

Criar uma consulta com base em várias tabelas

Criar, editar ou eliminar uma relação

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.