Associar tabelas e consultas

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

Este artigo discute os vários tipos de adesões e mostra-lhe como usá-los numa consulta. Por padrão, uma adesão é automaticamente criada se já houver uma relação entre duas fontes de dados que você usa numa consulta. Uma adesão também é criada se houver campos que correspondem claramente uns aos outros. Pode eliminar uma adesão criada automaticamente. Este artigo fornece informações básicas sobre relacionamentos de mesa, incluindo como criar uma.

Nota: Pode juntar-se a consultas da mesma forma que se junta às mesas, podendo também juntar-se a ambas.

Neste artigo

Descrição Geral

Tipos de adesões

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

Mostre todas as linhas de uma mesa, e linhas correspondentes da outra mesa

Mostre todas as linhas de ambas as mesas, e junte-se a eles onde existe um valor comum

Cruz junta-se

Junte tabelas com base numa desigualdade de valores de campo

Apagar uma adesão

Descrição Geral

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

Quando se adicionam tabelas a uma consulta, Access cria uniões que são baseadas em relações que foram definidas entre as tabelas. Pode criar juntas 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 fontes de dados para uma consulta, pode criar uniões entre as consultas de origem, bem como entre essas consultas e quaisquer tabelas que utilize como fonte de dados.

As adesão comportam-se de forma semelhante aos critérios de consulta, na medida em que estabelecem regras que os dados devem coincidir a incluir nas operações de consulta. Ao contrário dos critérios, as juntas também especificam que cada par de linhas que satisfaçam as condições de adesão serão combinadas no conjunto de registos para formar uma única linha.

Existem quatro tipos básicos de uniões: juntas interiores, uniões exteriores, juntas cruzadas e uniões desiguais. Este artigo explora cada tipo de adesão que pode usar, por que usa cada tipo e como criar as juntas.

A adesão é para consultas sobre quais as relações com as 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 join na consulta Design View, com as propriedades da junta abertas em uma caixa de diálogo:

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

Esta linha entre as mesas representa a adesão. Clique duas vezes numa join para abrir a caixa de diálogo Join Properties (retratada) e rever ou alterar a adesão.

As juntas às vezes são direcionais. Esta área da caixa de diálogo mostra-lhe qual a mesa que está na união e quais os campos utilizados para se juntar às mesas.

Esta área determina o tipo de adesão: a opção 1 é uma união interior, 2 é uma união exterior esquerda, e 3 é uma união exterior 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 adesão interior, nenhum outro dado está incluído. Numa adesão exterior, os registos não relacionados de uma tabela também estão incluídos nos resultados da consulta.

Início da Página

Tipos de adesões

Existem quatro tipos básicos de uniões: juntas interiores, uniões exteriores, juntas cruzadas e uniões desiguais. Juntas cruzadas e juntas desiguais são tipos avançados de união e raramente são usados, mas você deve saber sobre eles para ter uma compreensão completa de como as uniões funcionam.

Juntas interiores: apenas dados relacionados de ambas as tabelas combinadas

Uma adesão interna é aquela em que o Acesso apenas inclui dados de uma tabela se houver dados correspondentes na tabela relacionada, e vice-versa. A maior parte do tempo, usará sinuosos. Quando cria uma adesão e não especifica que tipo de adesão é, o Access assume que quer uma adesão interior. As juntas interiores são úteis porque permitem combinar dados de duas fontes com base em valores partilhados – por isso só se vê dados quando há uma imagem completa.

Exterior junta-se: todos os dados relacionados combinados corretamente, além de todos os restantes registos de uma tabela

Uma união exterior é como uma união interior, mas adiciona as filas restantes de uma das mesas. As uniões exteriores são direcionais: uma união exterior à esquerda inclui todos os registos da mesa esquerda – a primeira mesa à adesão – e uma união exterior à direita inclui todos os registos da mesa direita – a segunda mesa da mesa de adesão.

Juntas exteriores completas: todos os dados, combinados sempre que possível

Em alguns sistemas, uma união exterior pode incluir todas as linhas de ambas as mesas, com linhas combinadas quando correspondem. Isto chama-se uma união exterior completa, e o Access não os apoia explicitamente. No entanto, pode utilizar uma cruz de adesão e critérios para obter o mesmo efeito.

Cross junta-se: todos os dados, combinados de todas as formas possíveis

Na maior parte do tempo, uma cruz junta é um efeito colateral de adicionar duas mesas a uma consulta e, em seguida, esquecer-se de se juntar a elas. O acesso interpreta isto para significar que você quer ver cada registo de uma mesa combinado com cada registo da outra tabela – todas as combinações possíveis de registos. Como nenhum dado pode ser combinado, este tipo de adesão raramente produz resultados úteis. Mas há alguns casos em que uma cruz se junta é o que você precisa.

Unções desiguais: como uma adesão regular, mas usando uma comparação diferente para combinar linhas

Uniões desiguais utilizam um operador que não seja o sinal igual (=) para comparar valores e determinar se e como combinar os dados. Juntas desiguais não são explicitamente suportadas, mas você pode usar uma união cruzada e critérios para obter o mesmo efeito.

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

Se quiser mostrar apenas as linhas que têm valores correspondentes no campo unido, use uma união interior. O acesso cria uniões internas automaticamente.

As associações internas são o tipo de associação mais comum. Contam uma consulta que as filas de uma das mesas unidas correspondem a linhas na outra tabela, com base nos dados nos campos aquecedia. Quando uma consulta com uma união interior é executada, apenas as linhas onde existe um valor comum em ambas as tabelas unidas serão incluídas nas operações de consulta.

Como uso uma união interior?

A maior parte do tempo, não precisas de fazer nada para usar uma adesão interior. Se as tabelas que adiciona a uma consulta já tiverem relacionamentos, o Access cria automaticamente uma união interior 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 juntas interiores se adicionar duas tabelas a uma consulta e essas tabelas têm um campo com o mesmo tipo de dados ou compatível e um dos campos de adesão é um chave primária. Os símbolos "um" e "muitos" não são exibidos neste caso, porque a integridade referencial não é aplicada.

Se adicionar consultas à sua consulta, e não ter criado relações entre essas consultas, o Access não cria automaticamente uniões interiores entre essas consultas ou entre consultas e tabelas. Geralmente, deve criá-los por si mesmo. Cria-se uma união interior arrastando um campo de uma fonte de dados para um campo noutra fonte de dados. O Access apresenta uma linha entre os dois campos para mostrar que foi criada uma associação.

Sintaxe SQL para uma união interior

As juntas interiores são especificadas no SQL na cláusula FROM, como mostrado abaixo:

A partir da tabela1 Mesa DE ADESaLHEINA INTERIOR2 Na mesa1.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 mais informações sobre a sintaxe de adesão interior, consulte o tema INNER JOIN Operation.

Início da Página

Mostre todas as linhas de uma mesa, e linhas correspondentes da outra mesa

As juntas exteriores dizem a uma pergunta que, embora algumas das linhas de ambos os lados da junta correspondam exatamente, a consulta deve incluir todas as linhas de uma mesa, e também aquelas linhas da outra mesa que partilham um valor comum em ambos os lados da união.

As juntas exteriores podem ser juntas exteriores à esquerda ou podem ser juntas exteriores direitas. Numa junção exterior à esquerda, a consulta inclui todas as linhas da primeira tabela na cláusula SQL FROM, e apenas aquelas linhas da outra tabela onde o campo de junção contém valores comuns a ambas as tabelas. Numa junção exterior à direita, a consulta inclui todas as linhas da segunda tabela na cláusula SQL FROM, e apenas as linhas da outra tabela onde o campo de junção contém valores comuns a ambas as tabelas.

Nota: Você pode facilmente dizer qual é a mesa esquerda ou a mesa direita em uma dada junta, clicando duas vezes na junta e, em seguida, olhando na caixa de diálogo Join Properties. Também pode mudar para a vista SQL e, em seguida, examinar a cláusula FROM.

Como algumas das linhas de um lado de uma junta exterior não terão linhas correspondentes da outra mesa, alguns dos campos devolvidos na consulta resultam da outra mesa ficarão vazios quando as linhas não corresponderem.

Como uso uma adesão externa?

Cria-se uma união exterior modificando uma união interior existente. Se não houver uma união interior, cria-se uma, e depois muda-a para uma união exterior.

Mude uma união interior para uma união exterior

  1. Na vista de Design de consulta, clique duas vezes na join que pretende alterar.

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

  2. Na caixa de diálogo Join Properties, note as escolhas 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 acesso exibe a adesão e mostra uma seta que aponta da fonte de dados onde todas as linhas serão incluídas na fonte de dados onde apenas as linhas que satisfazem a condição de adesão serão incluídas.

Uniguantes exteriores juntam-se

Se criar uma consulta que contenha uma LEFT JOIN e uma INNER JOIN, o Access pode não ser capaz de determinar qual a operação de adesão para executar primeiro. Como os resultados são diferentes dependendo se a adesão à esquerda ou a união interna são realizadas primeiro, o Access apresenta uma mensagem de erro:

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

Sintaxe SQL para uma união externa

As juntas exteriores são especificadas no SQL na cláusula FROM, como mostrado abaixo:

DA mesa 1 [ ESQUERDA ] DIREITO ] JUNTE a mesa2
NA tabela1.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 mais informações sobre a sintaxe exterior, consulte o tópico LEFT JOIN, RIGHT JOIN Operations.

Início da Página

Mostre todas as linhas de ambas as mesas, e junte-se a eles onde existe um valor comum

Quando você quer mostrar todas as linhas de duas mesas e se juntar a elas com base em valores comuns, você usa uma união exterior completa. O acesso não suporta explicitamente a toda a união exterior, mas pode obter o mesmo efeito usando uma consulta sindical. O seguinte procedimento explica como fazê-lo, mas se quiser mais informações sobre consultas sindicais, consulte a secção Ver Também.

Para usar uma consulta sindical para realizar uma adesão exterior completa:

  1. Crie uma consulta que tenha uma união exterior à esquerda no campo que você quer usar para uma união exterior 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 sindical para realizar uma adesão exterior completa.

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

  7. No código que colou, mude 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 adesão é NULO na primeira tabela listada na cláusula FROM (tabela esquerda).

    Por exemplo, se a cláusula FROM for:

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

    Adicione a seguinte cláusula WHERE:

    WHERE Products.ID IS NULL

  10. Digite um ponto evíplo (;) no final da cláusula DE RM para indicar o fim da consulta sindical.

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

Cruz junta-se

As juntas cruzadas são diferentes das juntas interiores e exteriores, na forma como não estão explicitamente representadas em Access. Numa junta cruzada, cada linha de uma mesa é combinada com cada linha de outra mesa, resultando no que é chamado de produto transversal ou de um produto cartesiano. Sempre que executa uma consulta que tem tabelas que não estão explicitamente unidas, um produto cruzado é o resultado. Juntas cruzadas geralmente não são intencionais, mas há casos em que podem ser úteis.

Por que usaria uma cruz juntando-me?

Se quiser examinar todas as combinações possíveis de linhas entre duas mesas ou consultas, use uma cruz de adesão. Por exemplo, suponha que o seu negócio teve um ano espetacular, e está a considerar dar descontos aos seus clientes. Você pode construir uma consulta que resume as compras de cada cliente, criar uma pequena tabela que tem várias percentagens de desconto possíveis, e combinar os dois em outra consulta que executa uma cruz junta. Acaba-se com uma consulta que exibe um conjunto de descontos hipotéticos para cada cliente.

Como uso uma cruz?

Uma cruz junta é produzida sempre que incluir mesas ou consultas na sua consulta e não criar pelo menos uma união explícita para cada mesa ou consulta. O acesso combina cada linha de cada mesa ou consulta que não está explicitamente unida a qualquer outra mesa ou consulta a todas as outras linhas dos resultados. Considere o cenário de desconto do parágrafo anterior. Assuma que tem 91 clientes e que quer olhar para cinco possíveis percentagens de desconto. A sua cruz produz 455 linhas (o produto de 91 e 5).

Como pode imaginar, juntas cruzadas não intencionais podem criar um grande número de linhas nos seus resultados de consulta. Além disso, estes resultados são geralmente sem sentido, porque se não pretender realmente combinar todas as linhas com todas as outras linhas, a maioria das linhas combinadas que aparecem nos resultados não fará sentido. Finalmente, as consultas que usam juntas de cruz não intencionais podem demorar muito tempo a correr.

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

1. Os campos circulantes devem ser unidos uns aos outros.

Produto cruzado não intencional

1. Note o número muito elevado de registos.

O resultado corrigido da consulta

1. Note que o número de registos é muito menor.

Início da Página

Junte tabelas com base numa desigualdade de valores de campo

As adesão não têm de se basear na equivalência dos campos aderidos. Uma adesão pode basear-se em qualquer operador de comparação, como o maior (>), menos do que (<) ou não é igual (<>). Juntas que não se baseiam na equivalência são chamadas de uniões desiguais.

Se quiser combinar as linhas de duas fontes de dados baseadas em valores de campo que não são iguais, utiliza uma união desigual. Tipicamente, as uniões desiguais baseiam-se nos maiores do que (>), inferiores a (<), maiores ou iguais a (>=) ou menos ou iguais a (<=) operadores de comparação. Juntas desiguais que se baseiam no operador não igual (<>) podem devolver quase tantas linhas como juntas cruzadas, e os resultados podem ser difíceis de interpretar.

Como uso uma junta desigual?

Juntas desiguais não são suportadas na vista do Design. Se desejar usá-las, deve fazê-lo utilizando a vista SQL. No entanto, pode criar uma adesão à vista design, mudar para a vista SQL, encontrar o operador de comparação igual (=) e mudá-lo para o operador que pretende utilizar. Depois de o fazer, só pode abrir a consulta na vista Design novamente se mudar primeiro o operador de comparação para iguais (=) na vista SQL.

Apagar uma adesão

Se o Access criar automaticamente uma adesão que não deseja, ou se criar uma união por engano — por exemplo, uma união entre dois campos que têm tipos de dados diferentes – pode eliminar a adesão.

  1. Na grelha de design de consulta, clique na join que pretende remover.

  2. Pressione DELETE.

-ou-

  • Na grelha de design de consulta, clique na imagem da imagem que pretende remover e, em seguida, clique em Eliminar.

Início da Página

Nota:  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 indicar-nos se estas informações foram úteis? Eis o artigo em inglês para sua referência.​

Consulte Também

Adicione registos a uma tabela utilizando uma consulta de apêndice

resultados de várias consultas selecionadas usando uma consulta sindical

várias tabelas

Criar, editar ou excluir 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.

×