Por vezes, o processo de criação e utilização de consultas no Access consiste simplesmente em selecionar campos de uma tabela, aplicar possivelmente alguns critérios e, em seguida, ver os resultados. Mas e se, tal como acontece frequentemente, os dados de que precisa estiverem distribuídos por mais do que uma tabela? Felizmente, pode criar uma consulta que combina informações de múltiplas origens. Este tópico explora alguns cenários em que pode extrair dados de mais do que uma tabela e demonstra como fazê-lo.
O que pretende fazer?
Utilizar dados de uma tabela relacionada para melhorar as informações da sua consulta
Pode ter casos em que uma consulta baseada numa tabela lhe fornece as informações de que precisa, mas extrair dados de outra tabela ajudaria a tornar os resultados da consulta ainda mais claros e úteis. Por exemplo, suponha que tem uma lista de IDs de funcionários que aparecem nos resultados da consulta. Sabe que seria mais útil ver o nome do funcionário nos resultados, mas os nomes dos funcionários estão localizados numa tabela diferente. Para que os nomes dos funcionários sejam apresentados nos resultados da consulta, tem de incluir ambas as tabelas na consulta.
Utilizar o Assistente de Consultas para criar uma consulta a partir de uma tabela principal e de uma tabela relacionada
-
Certifique-se de que as tabelas têm uma relação definida na janela Relações.
Como?
-
No separador Ferramentas da Base de Dados, no grupo Mostrar/Ocultar, clique em Relações.
-
No separador Estrutura, no grupo Relações, clique em Todas as Relações.
-
Identifique as tabelas que deverão ter uma relação definida.
-
Se as tabelas forem visíveis na janela Relações, verifique se já foi definida uma relação.
Uma relação é apresentada como uma linha que liga as duas tabelas num campo comum. Pode fazer duplo clique numa linha de relação para ver que campos nas tabelas estão ligados pela relação.
-
Se as tabelas não estiverem visíveis na janela Relações, tem de as adicionar.
No separador Estrutura, no grupo Mostrar/Ocultar, clique em Nomes de Tabelas.
Faça duplo clique em cada uma das tabelas que pretende apresentar e, em seguida, clique em Fechar.
-
-
Se não encontrar uma relação entre as duas tabelas, crie uma ao arrastar um campo de uma das tabelas para um campo na outra tabela. Os campos em que criar a relação entre as tabelas têm de ter tipos de dados idênticos.
Nota: Pode criar uma relação entre um campo do tipo de dados Numeração automática e um campo do tipo de dados Número se esse campo tiver o tamanho Número Inteiro Longo. Normalmente, será esse o caso se estiver a criar uma relação um-para-muitos.
É apresentada a caixa de diálogo Editar Relações.
-
Clique em Criar para criar a relação.
Para obter mais informações sobre as opções à disposição ao criar uma relação, consulte o artigo Criar, editar ou eliminar uma relação.
-
Feche a janela Relações.
-
-
No separador Criar, no grupo Consultas, clique em Assistente de Consultas.
-
Na caixa de diálogo Nova Consulta, clique em Assistente de Consultas Simples e, em seguida, clique em OK.
-
Na caixa de combinação Tabelas/Consultas, clique na tabela que contém as informações básicas que pretende incluir na sua consulta.
-
Na lista Campos Disponíveis, clique no primeiro campo que pretende incluir na sua consulta e, em seguida, clique no botão de seta única para a direita para mover esse campo para a lista Campos Selecionados. Faça o mesmo com cada campo adicional dessa tabela que pretende incluir na sua consulta. Esses campos podem ser os que pretende que sejam devolvidos nos resultados da consulta ou os que pretende utilizar para limitar as linhas nos resultados ao aplicar critérios.
-
Na caixa de combinação Tabelas/Consultas, clique na tabela que contém os dados relacionados que pretende utilizar para melhorar os resultados da sua consulta.
-
Adicione os campos que pretende utilizar para melhorar os resultados da sua consulta à lista Campos Selecionados e clique em Seguinte.
-
Em Deseja uma consulta de detalhe ou de resumo?, clique em Detalhe ou Resumo.
Se não quiser que a consulta execute funções de agregação (Soma, Média, Mín, Máx, Contagem, DesvPad ou Var), selecione uma consulta de detalhe. Se quiser que a consulta execute uma função de agregação, selecione uma consulta de resumo. Após efetuar a sua escolha, clique em Seguinte.
-
Clique em Concluir para ver os resultados.
Exemplo que utiliza a base de dados de exemplo Northwind
No exemplo seguinte, o Assistente de Consultas foi utilizado para criar uma consulta que apresenta uma lista de encomendas, os portes de envio para cada encomenda e o nome do funcionário que processou cada uma das encomendas.
Nota: Este exemplo envolve modificar a base de dados de exemplo Northwind. Poderá querer fazer uma cópia de segurança da base de dados de exemplo Northwind e, em seguida, seguir este exemplo com essa cópia de segurança.
Utilizar o Assistente de Consultas para criar a consulta
-
Abra a base de dados de exemplo Northwind. Feche o formulário de início de sessão.
-
No separador Criar, no grupo Consultas, clique em Assistente de Consultas.
-
Na caixa de diálogo Nova Consulta, clique em Assistente de Consultas Simples e, em seguida, clique em OK.
-
Na caixa de combinação Tabelas/Consultas, clique em Tabela: Encomendas.
-
Na lista Campos Disponíveis, faça duplo clique em IDDaEncomenda para mover esse campo para a lista Campos Selecionados. Faça duplo clique em Portes de Envio para mover esse campo para a lista Campos Selecionados.
-
Na caixa de combinação Tabelas/Consultas, clique em Tabela: Funcionários.
-
Na lista Campos Disponíveis, faça duplo clique em NomePróprio para mover esse campo para a lista Campos Selecionados. Faça duplo clique em Apelido para mover esse campo para a lista Campos Selecionados. Clique em Seguinte.
-
Uma vez que está a criar uma lista de todas as encomendas, irá utilizar uma consulta de detalhe. Se estiver a somar os portes de envio por funcionário ou a efetuar outra função de agregação, pode utilizar uma consulta de resumo. Clique em Detalhe (mostra todos os campos para cada registo)e em Seguinte.
-
Clique em Concluir para ver os resultados.
A consulta devolve uma lista de encomendas, cada uma com os respetivos portes de envio e o nome próprio e o apelido do funcionário que a processou.
Ligar os dados de duas tabelas ao utilizar as respetivas relações com uma terceira tabela
Muitas vezes, os dados de duas tabelas estão relacionados entre si através de uma terceira tabela. Normalmente, é isso que acontece, uma vez que os dados entre as primeiras duas tabelas estão relacionados numa relação muitos para muitos. Muitas vezes, uma prática recomendada para a estrutura da base de dados consiste em dividir uma relação um-para-muitos entre duas tabelas em duas relações um-para-muitos que envolvem três tabelas. Para o fazer, tem de criar uma terceira tabela, denominada tabela de junção ou tabela de relação, que tem uma chave primária e uma chave externa para cada uma das outras tabelas. Em seguida, é criada uma relação um-para-muitos entre cada chave externa na tabela de junção e a chave primária correspondente de uma das outras tabelas. Nesses casos, tem de incluir as três tabelas na sua consulta, mesmo que queira obter dados de apenas duas.
Criar uma consulta Selecionar ao utilizar tabelas com uma relação um-para-muitos
-
No separador Criar, no grupo Consultas, clique em Estrutura da Consulta.
-
Faça duplo clique nas duas tabelas que contêm os dados que pretende incluir na consulta e também na tabela de junção que as liga e, em seguida, clique em Fechar.
As três tabelas são apresentadas na área de trabalho de estrutura da consulta, ligadas aos campos adequados.
-
Faça duplo clique em cada um dos campos que pretende utilizar nos resultados da sua consulta. Em seguida, cada campo é apresentado na grelha de estrutura da consulta.
-
Na grelha de estrutura da consulta, utilize a linha Critérios para introduzir critérios de campos. Para utilizar um critério de campo sem apresentar o campo nos resultados da consulta, desmarque a caixa de verificação na linha Mostrar desse campo.
-
Para ordenar os resultados com base nos valores de um campo, na grelha de estrutura da consulta, clique em Ascendente ou Descendente (consoante a forma como quiser ordenar os registos) na linha Ordenação desse campo.
-
No separador Estrutura, no grupo Resultados, clique em Executar.
O Access apresenta os resultados da consulta na vista de Folha de dados.
Exemplo que utiliza a base de dados de exemplo Northwind
Nota: Este exemplo envolve modificar a base de dados de exemplo Northwind. Poderá querer fazer uma cópia de segurança da base de dados de exemplo Northwind e, em seguida, seguir este exemplo com a cópia de segurança.
Suponhamos que tem uma nova oportunidade: um fornecedor no Rio de Janeiro encontrou o seu site e poderá querer fazer negócios consigo. No entanto, opera apenas no Rio e em São Paulo. Fornece todo o tipo de produtos alimentares de que é intermediário. Trata-se de uma empresa bastante grande que pretende garantias de que pode permitir-lhes ter vendas potenciais suficientes que justifiquem o negócio, ou seja, pelo menos 20 000,00 BRL por ano em vendas (cerca de 9300,00 USD). Pode fornecer-lhes o mercado de que necessitam?
Os dados de que precisa para responder a esta pergunta encontram-se em dois locais: tabela Clientes e tabela Detalhes da Encomenda. Estas tabelas estão ligadas entre si através da tabela Encomendas. As relações entre as tabelas já foram definidas. Na tabela Encomendas, cada encomenda só pode ter um cliente relacionado com a tabela Clientes no campo IDDeCliente. Cada registo na tabela Detalhes da Encomenda está relacionado com apenas uma encomenda na tabela Encomendas, no campo IDDaEncomenda. Desta forma, um determinado cliente pode ter várias encomendas, cada uma com vários detalhes de encomenda.
Neste exemplo, iria criar uma consulta cruzada com o total de vendas por ano nas cidades do Rio de Janeiro e de São Paulo.
Criar a consulta na vista Estrutura
-
Abra a base de dados Northwind. Feche o formulário de início de sessão.
-
No separador Criar, no grupo Consultas, clique em Estrutura da Consulta.
-
Faça duplo clique em Clientes, Encomendas e, em seguida, emDetalhes da Encomenda.
As três tabelas são apresentadas na área de trabalho de estrutura da consulta.
-
Na tabela Clientes, faça duplo clique no campo Cidade para o adicionar à grelha de estrutura da consulta.
-
Na grelha de estrutura da consulta, na coluna Cidade, na linha Critérios, escreva Em ("Rio de Janeiro","São Paulo"). Desta forma, apenas os registos em que cliente se encontra numa destas duas cidades serão incluídos na consulta.
-
Na tabela Detalhes da Encomenda, faça duplo clique nos campos DataDeEnvio e PreçoUnitário.
Os campos são adicionados à grelha de estrutura da consulta.
-
Na coluna DataDeEnvio, na grelha de estrutura da consulta, selecione a linha Campo. Substitua [DataDeEnvio] por Ano: Formatar([DataDeEnvio],"aaaa"). Esta ação cria o alias de campo Ano, que lhe permite utilizar apenas a parte relativa ao ano do valor no campo DataDeEnvio.
-
Na coluna PreçoUnitário, na grelha de estrutura da consulta, selecione a linha Campo. Substitua [PreçoUnitário] por Vendas: [Detalhes da Encomenda].[PreçoUnitário]*[Quantidade]-[Detalhes da Encomenda].[PreçoUnitário]*[Quantidade]*[Desconto]. Esta ação cria o alias de campo Vendas, que calcula as vendas de cada registo.
-
No separador Estrutura, no grupo Tipo de Consulta, clique em Cruzada.
Duas novas linhas, Total e Cruzada, são apresentadas na grelha de estrutura da consulta.
-
Na coluna Cidade, na grelha de estrutura da consulta, clique na linha Cruzada e, em seguida, clique em Cabeçalho de Linha.
Isto faz com que os valores de cidade sejam apresentados como os cabeçalhos de linha (ou seja, a consulta devolve uma linha para cada cidade).
-
Na coluna Ano, clique na linha Cruzada e, em seguida, clique em Cabeçalho de Coluna.
Isto faz com que os valores de ano sejam apresentados como os cabeçalhos de coluna (ou seja, a consulta devolve uma coluna para cada ano).
-
Na coluna Vendas, clique na linha Cruzada e, em seguida, clique em Valor.
Isto faz com que os valores de vendas sejam apresentados na intersecção de linhas e colunas (ou seja, a consulta devolve um valor de vendas para cada combinação de cidade e ano).
-
Na coluna Vendas, clique na linha Totais e, em seguida, clique em Soma.
Isto faz com que a consulta some os valores nesta coluna.
Pode deixar a linha Totais para as outras duas colunas no valor predefinido de Agrupar Por, uma vez que pretende ver cada valor para estas colunas e não agregar valores.
-
No separador Estrutura, no grupo Resultados, clique em Executar.
Tem agora uma consulta que devolve o total de vendas por ano no Rio de Janeiro e em São Paulo.
Ver todos os registos de duas tabelas semelhantes
Por vezes, poderá querer combinar dados de duas tabelas com estrutura idêntica, embora uma delas esteja localizada noutra base de dados. Tenha em conta o seguinte cenário.
Suponha que é um analista que está a trabalhar com dados de estudantes. Está a empreender uma iniciativa de partilha de dados entre a sua escola e outra escola, para que ambas possam melhorar os respetivos programas. Para algumas das perguntas que pretende explorar, seria melhor ver todos os registos de ambas as escolas em conjunto, em vez dos registos de cada escola em separado.
Poderá importar os dados da outra escola para novas tabelas na sua base de dados, no entanto, as alterações aos dados da outra escola não seriam refletidas na base de dados. Uma solução melhor seria ligar às tabelas da outra escola e, em seguida, criar consultas que combinassem os dados ao utilizá-los. Seria possível analisar os dados como um único conjunto, em vez de efetuar duas análises e tentar interpretá-las como se fossem uma.
Para ver todos os registos de duas tabelas com estrutura idêntica, utilize uma consulta de união.
Não é possível apresentar consultas União na vista Estrutura. Pode criá-las ao utilizar comandos SQL introduzidos no separador de objeto vista SQL.
Criar uma consulta União ao utilizar duas tabelas
-
No separador Criar, no grupo Consultas, clique em Estrutura da Consulta.
-
No separador Estrutura, no grupo Tipo de Consulta, clique em União.
A consulta muda da vista Estrutura para a vista SQL. Nesta altura, o separador de objeto da vista SQL está vazio.
-
Na vista SQL, escreva SELECT, seguido de uma lista dos campos da primeira tabela que pretende na consulta. Os nomes dos campos devem estar entre parênteses retos e ser separados por vírgulas. Quando terminar de escrever os nomes dos campos, prima ENTER. O cursor desloca-se para baixo uma linha na vista SQL.
-
Escreva FROM, seguido do nome da primeira tabela que pretende na consulta. Prima ENTER.
-
Se quiser especificar um critério para um campo da primeira tabela, escreva WHERE, seguido do nome do campo, de um operador de comparação (normalmente, um sinal de igual (=) e do critério. Pode adicionar mais critérios ao fim da cláusula WHERE ao utilizar a palavra-chave AND e a mesma sintaxe utilizada para o primeiro critério, por exemplo WHERE [ClassLevel="100" AND [CreditHours]>2. Quando terminar de especificar os critérios, prima ENTER.
-
Escreva UNION e prima ENTER.
-
Escreva SELECT, seguido de uma lista dos campos da segunda tabela que pretende na consulta. Deve incluir os mesmos campos nesta tabela que incluiu na primeira tabela e pela mesma ordem. Os nomes dos campos devem estar entre parênteses retos e ser separados por vírgulas. Quando terminar de escrever os nomes dos campos, prima ENTER.
-
Escreva FROM, seguido do nome da segunda tabela que pretende incluir na consulta. Prima ENTER.
-
Se quiser, adicione uma cláusula WHERE, conforme descrito no passo 6 deste procedimento.
-
Escreva um ponto e vírgula (;) para indicar o fim da sua consulta.
-
No separador Estrutura, no grupo Resultados, clique em Executar.
Os resultados são apresentados na vista de Folha de Dados.