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 incluir várias origens de dados numa consulta do Access, utilize as associações para limitar os registos que pretende ver, com base no modo como as origens de dados relacionados com umas às outras. Também é utilizar associações para combinar registos de ambas as origens de dados, para que cada par de registos das origens torna-se um registo nos resultados da consulta.

Este artigo descreve os vários tipos de associações e mostra como os pode utilizar numa consulta. Por predefinição, uma associação é criada automaticamente se já existir uma relação entre duas origens de dados que utilizar numa consulta. Também é criada uma associação se houver campos que correspondem claramente umas às outras. 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 participar consultas da mesma forma que associar tabelas e também pode aderir ambos.

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 de outra tabela

Mostrar todas as linhas das duas tabelas e participar em-los onde existe um valor comum

Associações cruzadas

Associar tabelas com base numa desigualdade dos valores do campo

Eliminar uma associação

Descrição Geral

Uma base de dados é uma coleção de tabelas de dados que o cliente relações lógicas umas às outras. Pode utilizar relações para ligar tabelas por campos que têm em comum. Uma tabela pode ser 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.

Ao adicionar tabelas a uma consulta, Access cria associações externas que são baseadas no relações que tiverem sido definidas entre as tabelas. Pode criar manualmente associações em consultas, mesmo que não representam relações que já foi definidas. Se utilizar outras consultas (em vez de ou para além de tabelas) como origens de dados para uma consulta, pode criar associações entre as consultas de origem e também entre esses consultas e todas as tabelas que utilizar como origens de dados.

Associações comportam-se de forma semelhante aos critérios de consulta em que estabelecem regras que os dados têm de corresponder devem ser incluídas nas operações de consulta. Ao contrário de critérios, as associações também especificar que cada par de linhas que satisfaçam as condições de associação irão ser combinado no conjunto de registos para formar uma única linha.

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

As associações são para as consultas o que as relações são para as tabelas: um indicador de como os dados de duas origens diferentes 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 sobre a associação para abrir o caixa de diálogo Propriedades da associação (descrito) e rever ou alterar a associação.

Por vezes as associações são direcionais. Esta área da caixa de diálogo mostra a posição da 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 é a associação interna, a 2 é a associação externa esquerda e a 3 é a associação externa direita.

Podem ser utilizados campos de ambas as tabelas e são apresentados os dados dessas tabelas relativos a uma determinada tarefa. 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: as associações internas, as associações externas, as associações cruzadas e as associações desiguais. As associações cruzadas e desiguais são tipos avançados de associação e raramente são utilizados, no entanto, deverá ter conhecimento sobre estes tipos para compreender melhor como funcionam as associações.

Associações internas: apenas os dados relacionados das duas tabelas combinadas

Uma associação interna é aquela onde o Access apenas inclui dados de uma tabela se existirem dados correspondentes na tabela relacionada e vice-versa. Na maior parte das vezes são utilizadas associações internas. Se criar uma associação e não especificar o tipo da mesma, o Access assumirá que pretende uma associação interna. As associações internas são úteis porque permitem a combinação de dados de duas origens com base em valores partilhados - por esta razão só verá dados com o puzzle completo.

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

Uma associação externa é semelhante à 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 da esquerda - a primeira da associação - e uma associação externa direita inclui todos os registos da tabela da direita - a segunda da associação.

Associações externas completas: todos os dados, combinados quando viável

Existem alguns sistemas onde uma associação externa pode incluir todas as linhas das duas tabelas, com linhas combinadas quando correspondem. Esta associação é designada por associação externa completa e o Access não a suporta explicitamente. No entanto, pode utilizar uma associação cruzada e critérios para alcançar o mesmo efeito.

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

Na maior parte das vezes, uma associação cruzada é um efeito secundário de adicionar duas tabelas a uma consulta e não as associar. O Access interpreta esta situação como se quisesse que todos os registos de uma tabela sejam combinados com todos os registos da outra tabela - todas as combinações possíveis dos registos. Devido ao facto de os dados não poderem ser combinados, este tipo de associação raramente é frutífero, mas existem alguns casos em que tudo o que precisa é de uma associação cruzada.

Associações desiguais: semelhantes às associações normais mas utilizam 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 devem ser combinados os dados. As associações desiguais não são suportadas explicitamente mas pode utilizar uma associação cruzada e critérios para alcançar o mesmo efeito.

Mostrar linhas onde existe um valor comum nas duas tabelas associadas

Se pretender mostrar apenas as linhas que possuam valores correspondentes nos campos associados, utilize uma associação interna. O Access cria associações internas automaticamente.

Associações internas são do tipo mais comuns de associação. Indicam uma consulta que as linhas de uma da associados tabelas corresponderem à linhas na outra tabela, com base nos dados dos campos associados. Quando uma consulta com uma associação interna é executada, apenas as linhas onde existe um valor comum nas duas tabelas associadas serão incluídas nas operações de consulta.

Como utilizo uma associação interna?

A maior parte das vezes, não é necessário efetuar qualquer procedimento para utilizar uma associação interna. Se as tabelas que adicionou a uma consulta já possuírem relações, o Access criará uma associação interna automaticamente entre cada par de tabelas relacionadas, quando as adicionar. Se for imposta a integridade referencial, o Access apresentará também um "1" acima da linha de associação para mostrar a tabela que está no lado "um" de uma relação um-para-muitos e um símbolo de infinito () para mostrar a tabela que está do lado "muitos".

Mesmo se ainda não criou relações, o Access cria automaticamente as associações internas se adicionar duas tabelas a uma consulta e essas tabelas tenham um campo com os mesmos ou tipo de dados compatíveis e uma dos campos de associação é uma chave primária. Os símbolos "um" e "muitos" não são apresentados neste caso, uma vez que a integridade referencial não é imposta.

Se adicionar consultas à sua consulta e não tiver criado relações entre esses consultas, o Access não cria automaticamente associações internas entre esses consultas ou entre as tabelas e consultas. Em geral, deverá criá-las sozinho. Criar uma associação interna ao arrastar um campo a partir de uma origem de dados para um campo na outra origem de dados. O Access apresenta uma linha entre os dois campos para mostrar que foi criada uma associação.

Sintaxe SQL para um associação interna

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

FROM tabela1 INNER JOIN tabela2 ON tabela1.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 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 de outra tabela

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

As associações externas podem ser associações externas esquerdas ou associações externas direitas. 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 a tabela que está a tabela para a esquerda ou da tabela direita numa associação determinada fazendo duplo clique na associação e, em seguida, está à procura na caixa de diálogo Propriedades da associação. Pode também mudar para a vista SQL e, em seguida, examine a cláusula FROM.

Uma vez que algumas linhas de um lado de uma associação à direita 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 tiverem correspondência.

Como utilizo uma associação externa?

Uma associação externa é criada através da alteração de uma associação interna já existente. Se não existir uma 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 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 a partir da origem de dados onde todas as linhas serão incluídas para a origem de dados onde serão incluídas apenas essas linhas que satisfazem a condição de associação.

Associações externas ambíguas

Se criar uma consulta que contém uma LEFT JOIN e uma associação interna, Access poderá não conseguir determinar qual participar operação deve ser realizada primeiro. Uma vez que os resultados são diferentes dependendo se a associação à esquerda ou a associação interna é executada em primeiro lugar, o Access apresenta uma mensagem de erro:

Para corrigir este erro, tem de modificar a consulta para que seja limpar qual das associações deve ser realizada primeiro.

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 [esquerda | DIREITA] JOIN tabela2
no table1.field1 comparar. 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 LEFT JOIN, RIGHT JOIN.

Início da Página

Mostrar todas as linhas das duas tabelas e participar em-los onde existe um valor comum

Quando pretender mostrar todas as linhas das duas tabelas e associá-las baseado em valores comuns, deve utilizar uma associação externa completa. Access não suporta explicitamente as associações externas completas, mas é possível alcançar o mesmo efeito utilizando uma consulta União. O procedimento seguinte 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 colado, altere LEFT JOIN para RIGHT JOIN.

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

  9. Adicione uma cláusula WHERE que especifique que o valor do campo associado é NULL na primeira tabela listada na cláusula FROM (a tabela da esquerda).

    Por exemplo, se a cláusula FROM for:

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

    Seria necessário adicionar a seguinte cláusula WHERE:

    WHERE Products.ID IS NULL

  10. Introduza um ponto e vírgula (;) no fim 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

Associações cruzadas são diferentes das associações internas e externas em que não são explicitamente representadas no Access. Numa associação cruzada, cada linha de uma tabela for combinada com cada linha da outra tabela, que resulta no que é denominado um produto cruzado ou um produto cartesiano. Sempre que executa uma consulta que tem as tabelas que não estejam explicitamente associadas, um produto cruzado é o resultado. Associações cruzadas são normalmente não intencionais, mas existem casos onde pode ser útil.

Porque utilizaria uma associação cruzada?

Se pretender examinar todas as combinações possíveis de linhas entre duas tabelas ou consultas, utilize uma associação cruzada. Por exemplo, suponha que o seu negócio teve um ano espectaculares e estiver a considerar que lhe dá uma descontos aos seus clientes. Pode criar uma consulta que soma de compras de cada cliente, criar uma pequena tabela que tem várias percentagens de desconto possíveis e combinar duas na outra consulta que efetua uma associação cruzada. Terminar com uma consulta que apresenta um conjunto de hipotéticas reduções de cada cliente.

Como posso utilizar uma associação cruzada?

Uma associação cruzada é produzida a qualquer altura, que incluem tabelas ou consultas na sua consulta e não criar pelo menos uma associação explícita para cada tabela ou consulta. Access combina todas as linhas de cada tabela ou consulta que não esteja associada explicitamente para qualquer outra tabela ou consulta para todas as outras linhas nos resultados de. Considere o cenário de desconto a partir do parágrafo anterior. Partem do pressuposto tiver 91 clientes e que pretende ver cinco percentagens de desconto possíveis. A associação cruzada gera 455 linhas (o produto de 91 e 5).

Como poderá imaginar, as associações cruzadas não intencionais podem criar grandes números de linhas nos resultados da consulta. Além disso, estes resultados são geralmente sem sentido, porque se realmente não tenciona combinar todas as linhas com linhas alternadas, a maior parte das linhas combinadas que aparecem nos resultados da não irá fazer sentido. Por fim, as consultas que utilizam associações cruzadas não intencionais podem demorar muito tempo para executar.

Associação cruzada não intencional na Vista de estrutura da consulta
Aderir a uma cruzada não intencional na vista de estrutura da consulta.

1. os campos dentro de um círculo devem ser associados umas às outras.

Produto cruzado não intencional
Produto cruzado devolvido pela associação cruzada não intencional descrita acima.

1. Nota o número de registos muito grande.

O resultado corrigido da consulta
Os resultados após a criação de associação correta.

1. note que o número de registos é muito mais pequeno.

Início da Página

Associar tabelas com base numa desigualdade dos valores do campo

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

Se pretende combinar as linhas de duas origens de dados baseadas em valores de campo que não são iguais, utilize uma associação desigual. Normalmente, as associações desiguais são baseadas nos operadores de comparação maior que (>), menor que (<), maior que ou igual a (>=) ou menor que ou igual a (<=). As associações desiguais que são baseadas no operador não é igual a (<>) podem devolver quase tantas linhas quanto as associações cruzadas e os resultados podem ter uma interpretação difícil.

Como posso utilizar uma associação desigual?

As associações desiguais não são suportadas na vista de estrutura. Se pretender utilizá-los, deve fazê-lo utilizando a vista SQL. No entanto, pode criar uma associação na vista de estrutura, mude para a vista SQL, encontrar a é igual a operador de comparação (=) e altere-o para o operador que pretende utilizar. Após fazer isto, pode apenas abrir a consulta na vista de estrutura novamente se que primeira alteração o operador de comparação de volta para o for igual a (=) na vista de SQL.

Eliminar uma associação

Se criar uma associação por engano  (por exemplo, uma associação entre dois campos cujos dados são diferentes)  ou se o Access criar uma automaticamente e não a pretende guardar, pode eliminá-la.

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

  2. Prima a tecla DELETE.

-ou-

  • Na grelha de estrutura da consulta, clique com o botão direito do rato na associação que pretende eliminar 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 de seleção utilizando uma consulta União

Criar uma consulta com base em várias 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.

×