Associar tabelas e consultas

Nota: Queremos fornecer-lhe os conteúdos de ajuda mais recentes o mais rapidamente possível e no seu idioma. Esta página foi traduzida automaticamente e pode conter erros gramaticais ou imprecisões. O nosso objetivo é que estes conteúdos lhe sejam úteis. Pode informar-nos se as informações foram úteis no final desta página? Eis o artigo em inglês para referência.

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, de modo a que cada par de registos das origens se transforme num registo nos resultados da consulta.

Este artigo descreve os vários tipos de associações e mostra-lhe como utilizá-los numa consulta. Por predefinição, uma associação é criada automaticamente 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 se correspondam claramente. Pode eliminar uma associação criada automaticamente. Este artigo fornece informações básicas sobre relações de tabelas, incluindo como criar uma.

Nota: Pode participar em consultas da mesma forma que participa em tabelas e também pode aderir ambas.

Neste artigo

Descrição geral

Tipos de associações

Mostrar linhas onde existe um valor comum nas duas tabelas associadas

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

Mostrar todas as linhas de ambas as tabelas e Junte-lhes o local onde existe um valor comum

Associações cruzadas

Associar tabelas com base numa inigualra de valores de campo

Eliminar uma associação

Descrição geral

Uma base de dados é uma coleção de tabelas de dados que transportam relações lógicas umas às outras. Utilize relações para ligar tabelas por campos que tenham em comum. Uma tabela pode fazer parte de qualquer número de relações, mas cada relação tem sempre duas tabelas. Numa consulta, uma relação é representada por uma associação.

Quando adiciona tabelas a uma consulta, o 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 as relações que já foram definidas. Se utilizar outras consultas (em vez de ou em conjunto com 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 se comportam de forma semelhante aos critérios de consulta, pois 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 satisfaça 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 aborda 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 as consultas de que relações são tabelas: uma indicação de como os dados em duas origens podem ser combinados com base em 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 (representada) e rever ou alterar a associação.

As associações são, por vezes, direcionais. Esta área da caixa de diálogo mostra-lhe qual é a tabela que se encontra na associação e que campos são utilizados para aderir às 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 que pertencem a uma determinada tarefa são apresentados a partir de cada uma. Numa associação interna, não estã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. As associações cruzadas e as associações desiguals são tipos de associação avançada e são raramente utilizadas, mas deve saber sobre as mesmas para ter uma compreensão total 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 inclui apenas dados de uma tabela se existirem dados correspondentes na tabela relacionada e vice-versa. Na maior parte do tempo, irá utilizar associações internas. Ao criar uma associação e não especificar o tipo de associação, o Access assume que pretende uma associação interna. As associações internas são úteis porque permitem-lhe combinar dados de duas origens com base em valores partilhados, para que só veja dados quando existe uma imagem completa.

Associações externas: todos os dados relacionados combinados corretamente, bem como todos os registos restantes 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 onde viável

Em alguns sistemas, uma associação externa pode incluir todas as linhas de ambas as tabelas, com linhas combinadas quando corresponderem. Esta chamada é chamada de associação externa completa e o Access não suporta explicitamente as mesmas. No entanto, pode utilizar uma associação cruzada e critérios para atingir o mesmo efeito.

Associações cruzadas: todos os dados, combinados 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 de as associar. O Access interpreta isto para significar que pretende ver todos os registos de uma tabela combinada com cada registo 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. No entanto, existem alguns casos em que uma associação cruzada é exatamente aquilo de que necessita.

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

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

Mostrar linhas onde existe um valor comum nas duas tabelas associadas

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

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

Como posso 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 ainda 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 um tipo de dados igual ou compatível e um dos campos de associação for 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 à sua 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. Em geral, deve criá-los pessoalmente. Pode criar uma associação interna ao arrastar um campo de uma origem de dados para um campo de outra 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, tal como é mostrado abaixo:

Of tabela1 Inner Join tabela2 on tabela1.tabela2 de comparação de campo1.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 da associação interna, consulte 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 informam uma consulta que, embora algumas das linhas em 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 da instrução SQL, e apenas as linhas da outra tabela onde o campo 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 da instrução SQL FROM e apenas as linhas da outra tabela onde o campo ingresso contém valores comuns a ambas as tabelas.

Nota: Pode saber facilmente qual é a tabela à esquerda ou a tabela direita de uma 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, analisar a cláusula FROM.

Uma vez que algumas das linhas de um dos lados de uma associação externa não têm linhas correspondentes da outra tabela, alguns dos campos apresentados nos resultados da consulta a partir dessa tabela ficarão vazios quando as linhas não corresponderem.

Como posso utilizar uma associação externa?

Pode criar uma associação externa modificando uma associação interna existente. Se não existir nenhuma associação interna, pode criar uma e, em seguida, alterá-la para uma associação externa.

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

  1. Na vista de 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 , repare nas opções listadas junto à opção 2 e 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 só serão incluídas as linhas que satisfaçam a condição de associação.

Associações externas ambíguas

Se criar uma consulta que contenha uma associação à esquerda e uma associação interna, 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 dependendo se a associação à esquerda ou a associação interna são efetuadas primeiro, o Access apresenta uma mensagem de erro:

Para corrigir este erro, tem de modificar a consulta de forma a que a associação seja desmarcada em primeiro lugar.

Sintaxe SQL para uma associação externa

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

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

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 da associação externa, consulte o tópico operações de associação à esquerda.

Início da Página

Mostrar todas as linhas de ambas as tabelas e Junte-lhes o local onde existe um valor comum

Quando quiser mostrar todas as linhas de duas tabelas e aderir-as com base em valores comuns, pode utilizar uma associação externa completa. O Access não suporta explicitamente as associações externas completas, mas pode obter o mesmo efeito ao utilizar uma consulta União. O seguinte procedimento explica como fazer isto, mas se pretender 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 especifique que o valor do campo Join é 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]

    Pode adicionar 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 porque não são explicitamente representadas no Access. Numa associação cruzada, cada linha de uma tabela é combinada com cada linha de outra tabela, o que resulta no nome de um produto cruzado ou de um produto cartesiano. Sempre que executar uma consulta que tenha tabelas que não sejam explicitamente Unidas, um produto cruzado é o resultado. As associações cruzadas não são normalmente intencionais, mas existem casos em que podem ser úteis.

Por que motivo devo utilizar uma associação cruzada?

Se pretender analisar todas as combinações possíveis de linhas entre duas tabelas ou consultas, utilize uma associação cruzada. Por exemplo, suponhamos que a sua empresa tenha tido um ano espetacular e que está a pensar em fornecer reembolsos aos seus clientes. Pode criar uma consulta que soma as compras de cada cliente, criar uma pequena tabela com vários percentuais de reembolsos possíveis e combinar as duas noutras consultas que efetuem uma associação cruzada. O utilizador acaba com uma consulta que apresenta um conjunto de reembolsos hipotéticos para cada cliente.

Como posso utilizar uma associação cruzada?

Uma associação cruzada é produzida sempre que inclui tabelas ou consultas na sua consulta e não cria, 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 nenhuma outra tabela ou consulta para todas as outras linhas nos resultados. Considere o cenário de reembolso a partir do parágrafo anterior. Assuma que tem clientes do 91 e que pretende ver cinco possíveis percentagems de desconto. A sua associação cruzada produz 455 linhas (o produto de 91 e 5).

Como pode imaginar, as associações cruzadas não pretendidas podem criar enormes números de linhas nos resultados da sua consulta. Além disso, estes resultados são geralmente insuficientes, 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ão sentido. Por fim, as consultas que utilizam associações cruzadas não intencionalmente podem demorar muito tempo a serem executadas.

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

1. os campos circulados devem ser associados uns aos outros.

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 inigualra de valores de campo

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

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

Como posso utilizar uma associação desigual?

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

Eliminar uma associação

Se o Access criar automaticamente uma associação de 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

Consulte Também

Adicionar registos a uma tabela utilizando uma consulta de acréscimo

Combinar os resultados de várias consultas selecionar com uma consulta União

Criar uma consulta com base em múltiplas tabelas

Criar, editar ou eliminar uma relação

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×