Professional Documents
Culture Documents
Selecionando Registros de Suas Tabelas
Selecionando Registros de Suas Tabelas
suas tabelas.
O comando SELECT.
Provavelmente este será o comando que mais você utilizará em suas instruções SQL. Na verdade cerca de 70 a 80
% de suas instruções SQL utilizarão o comando SELECT.
Estaremos trabalhando com o banco de dados Access e a sintaxe que usaremos para nossas instruções SQL será a
suportada pelo Access. Lembre-se que para as instruções SQL atuarem é necessário que o arquivo esteja aberto.
Iremos utilizar o banco de dados Escola.mdb e as tabelas criadas no artigo - Criando Tabelas .
Assim uma instrução SELECT para selecionar todos os registros da tabela - tblalunos - poderá ser escrita como:
- Os nomes dos campos e das tabelas podem ser indicados sem colchêtes [] , quando não existir espaços ou
pontuação, e são separados por vírgulas.
Assim para uma tabela de nome Tabela Alunos com os campos : Nome Aluno e Endereço Aluno seriamos
obrigados a escrever:
Vejamos um exemplo onde temos uma tabela chamada Produtos com os seguintes campos: Produto,Nome ,
Preço e noutra tabela chamada Estoque os campos: Produto, quantidade
Vamos extrair através de um comando SELECT o nome do produto, e o valor total em estoque.
Note que não temos a informação valor total , para isto vamos criar um campo calculado com o nome de Valor
Total e esse campo será resultante da multiplicação do preço do produto pela quantidade do mesmo em estoque.
SELECT produtos.nome, [preço]*[quantidade] AS [valor total]
FROM estoque INNER JOIN produtos ON estoque.produto = produtos.produto;
Criamos o campo calculado [preço]*[quantidade] e o nomeamos como valor total. A cláusula AS define o nome
desejado.
Outro exemplo seria a criação de um campo nome pela junção dos campos nome e sobrenome de uma tabela
clientes:
SELECT nome & ', ' & sobrenome AS nome FROM clientes
Se a cláusula AS não for utilizada será criado automaticamente um nome Expr1001 para o primeiro campo , e
assim por diante.
Para extrair uma relação com o nome dos alunos da 1 série, faremos:
Note que usamos o número entre aspas, pois o campo serie é definido como do tipo Texto, se fosse numérico
teríamos que escrever:
SELECT nome FROM tblalunos WHERE serie=1
Supondo que você desse a opção ao usuário de informar a série em uma caixa de texto(Text1) , você teria que
escrever o seguinte:
sql="SELECT nome FROM tblalunos WHERE serie=' " & text1.text & " ' "
Cuidado quando for trabalhar com datas como critério de seleção pois a data deve estar entre os caracteres # (
cerquilha) e no formato mm/dd/yyyy.
Assim para selecionar os alunos que nasceram no dia 12 de agosto de 1986 - 12/08/1986 - devemos fazer:
Dando a opção ao usuário de informa a data e usando um MaskeditBox(Maskdata) para receber a informacão
teremos:
sql="Select nome FROM tblalunos WHERE nascimento=" & "#" & Format(maskdata, "mm/dd/yyyy")
& "#"
Note que tivemos que mudar o formato da data para mm/dd/yyyy
Atenção !!! cuidado com o Apóstrofo - Se tiver um apóstrofo dentro de uma string de pesquisa , para evitar
problemas você deve delimitar a string de pesquisa por aspas. Assim para pesquisar o nome Macdonald's você de
fazer assim:
sql="SELECT nome FROM tblempresas WHERE nome= " & " Macdolnad's"
Assim para ordernarmos os alunos da 1º série por nome e em ordem crescente faríamos assim:
sql="SELECT nome FROM tblalunos WHERE serie=' " & text1.text & " ' " ORDER BY nome
sql="SELECT nome FROM tblalunos WHERE serie=' " & text1.text & " ' " ORDER BY nome DESC
Note que usamos o asterístico (*) que funciona como um coringa , substituindo os demais caracteres.
Quando você têm um vínculo entre duas tabelas poderá usar a palavra chave INNER JOIN na cláusula FROM
de uma instrução SELECT para criar um conjunto de registros com campos de ambas as tabelas
Naturalmente quanto maior a quantidade de tabelas das quais você deseja extrair os seus dados mais complexa a
instrução se tornará.
Assim, para obter o nome ,curso e a nota de cada aluno do banco de dados Escola.mdb; agora os dados que
desejamos encontram-se em três tabelas: Tblalunos ( o nome do aluno ) , TblNotas ( o codigo do curso e a nota)
e TblCursos.
A diferença entre a utilização da cláusula WHERE e da JOIN para reunir dados de múltiplas tabelas é que a
cláusula WHERE produz um recordset somente de leitura. Para criar um recordset atualizável devemos usar
JOIN
Temos 3 opções de cláusulas usadas com JOIN e, o comportamento na maneira de retornar os registros difere em
cada caso:
Tipos de
Registros da Tabela da Esquerda Registros da Tabela da Direita
JOIN
Somente registros com um registro Somente registros com um registro
INNER
correspondente na tabela da direita correspondente na tabela da esquerda
Somente registros com um registro
LEFT Todos os Registros
correspondente na tabela da esquerda
Somente registros com um registro
RIGHT Todos os Registros
correspondente na tabela da direita
Retorna