Construa consultas com duas tabelas usando o Access
[ratings]
Admita a seguinte situação: Você tem um banco de dados Access no qual existem duas tabelas, uma com a lista de todos os seus arquivos de música MP3 e a outra com uma lista de letras das canções.
Seu problema é o seguinte: como gerar uma consulta que dê como resultado somente as músicas e letras comuns às duas tabelas? Em outras palavras: como obter uma lista das músicas em MP3 cujas letras também existam no banco de dados?
A solução pode ser encontrada no Access apenas a um toque do mouse, sem nenhuma necessidade de programação. Trata-se de construir uma consulta simples com o objetivo de identificar em duas tabelas de dados quais registros contêm as mesmas informações em dois campos indicados: um em cada tabela. Essa solução pode ser aplicada em muitas outras situações.
Em termos bem simples, o problema pode ser representado por um diagrama que mostra dois conjuntos de dados, um para cada tabela envolvida. O xis do problema é identificar a porção comum às duas tabelas — correspondente à área em que os dois conjuntos se sobrepõem. Agora que já caracterizamos o problema, vamos à solução, passo a passo.
1. Para acompanhar o exemplo, crie uma tabela com os campos Intérprete e Título, ambos do tipo Texto. Salve-a com o nome tabMP3. Essa tabela, claro, vai conter a lista das músicas.
2. Crie outra tabela com os campos Intérprete, Título e Letra. Este último deve ser do tipo Memorando para abrigar a letra da música. O campo do tipo Texto tem capacidade máxima para somente 255 caracteres. A letra não caberia nele. Por sua vez, o campo de memorando suporta até 65.536 caracteres. Naturalmente, as duas tabelas, aqui, estão reduzidas aos campos que nos interessam para a solução do problema. Você pode incluir outros dados que achar convenientes: autor da música, autor da letra, ano de gravação etc. Dê à segunda tabela o nome tabLetras. Também não haveria nenhum problema se o campo Título, que é o ponto comum entre as tabelas, tivesse nome diferente nas duas. No entanto, para facilitar a compreensão, é mais cômodo usar o mesmo nome.
3. Para ter condições de executar o teste, alimente as duas tabelas com alguns registros, tendo o cuidado de incluir músicas comuns aos dois conjuntos de dados.
4. Na janela Banco de Dados, clique na orelha Consulta. Dê um duplo clique no comando Criar Consulta no Modo Design para projetar um objeto desse tipo a partir do zero. O Access abre duas janelas: Mostrar Tabela e Consulta1. Selecione (mouse mais a tecla Ctrl) o nome das duas tabelas — tabMP3 e tabLetras — na primeira janela e clique no botão Adicionar.
5. Dois quadros com os campos das tabelas aparecem na área superior de Consulta1. Se as duas tabelas tiverem chaves primárias chamadas Código (nome-padrão), o Access vai mostrar uma linha negra ligando esses dois campos. Clique nessa linha e acione a tecla Del para apagá-la. Isso porque o valor Código numa tabela não tem nenhum parentesco com seu homônimo na outra.
6. Agora o pulo-do-gato. Com o mouse, clique no campo Título de uma tabela e arraste-o para o campo de mesmo nome na outra tabela. Uma linha passa a ligar os dois campos indicando que a consulta deve procurar neles informações iguais. Dica: o procedimento também funciona quando o nome dos dois campos não é o mesmo.
7. No quadro tabLetras, arraste para a linha Campo, embaixo, os campos Título e Intérprete. Opcionalmente, indique que o campo Intérprete seja apresentado em ordem alfabética. Para isso, na linha Classificação, escolha Crescente.
8. Salve a consulta (com um nome amigável que ajude a identificá-la depois — exemplo: cnsMP3comLetras1) e execute-a. Veja que ela exibe exatamente os títulos comuns às duas tabelas. A solução descrita acima aparentemente resolve o problema apresentado no início deste tutorial.
9. Faça, agora, uma experiência importante. Inclua na tabela MP3 uma música cujo título já existe em tabLetras, mas registre aí outro intérprete. Escolha, de propósito, uma canção que não faz parte do núcleo comum entre as duas tabelas. Execute novamente a consulta. O que ocorre? A nova música não aparece. Isso porque a consulta está sendo feita com base na tabela tabLetras.
10. Agora, na janela Banco de Dados, selecione a consulta cnsMP3comLetras1 e copie-a. Cole-a no mesmo lugar com o nome de cnsMP3comLetras2. Selecione essa nova consulta e clique no botão Design. Na janela da consulta, linha Tabela, escolha, nos dois campos, tabMP3 em vez de tabLetras. Salve a consulta. Em outras palavras, estamos fazendo a mesma consulta, só que agora a outra tabela é nosso ponto de partida. Execute essa consulta modificada. O que ocorre? A música aparece, mas com outro intérprete. Para comparar, abra as duas consultas lado a lado.
11. Sempre que se trabalha com bancos de dados é preciso pensar em coisas desse tipo. O problema é que duas canções com o mesmo título e intérpretes diferentes podem ser a mesma música, ou não. Assim, se você quiser garantir a identidade total de título e de intérprete, precisa construir uma consulta ligeiramente diferente.
12. Experimente mais. Copie a primeira consulta e cole-a como cnsMP3comLetras11. Abra-a em modo Design e arraste o campo Intérprete de uma tabela para o mesmo campo na outra. Com isso, estamos dizendo que tanto o título como o intérprete devem coincidir nas duas tabelas.
13. Agora, copie a tabela cnsMP3comLetras2 e cole-a como cnsMP3comLetras22. Arraste o campo Intérprete da mesma forma.
14. Execute, lado a lado, as consultas 11 e 22. Embora se baseiem em tabelas diferentes elas dão os mesmíssimos resultados. A diferença, claro, está na busca de dupla identidade: de título e de intérprete. Embora se trate de consulta simples, um pequeno detalhe pode alterar consideravelmente os resultados.
15. O Access, nos bastidores, trabalha com a linguagem SQL. Trata-se de uma linguagem declarativa, específica para a manipulação de bancos de dados. Quando você monta uma pesquisa na janela gráfica de consulta, o programa vai criando internamente uma declaração SQL. Para vê-la, abra uma consulta e em seguida dê o comando Exibir/Modo SQL.