Como fazer uma busca quot;dentroquot; de uma busca?
Galera, olá pra todos!
Bem...
Eu gostaria de saber se é possível fazer uma busca ´dentro´ de uma busca?
Tipo:
Tenho um BD Interbase onde tenho vários modelos de carros quando quero selecionar o modelo ´GOL´ (esse tipo de busca eu sei fazer)
Ex:
Select * from ACarros
Where Marca like ´Modelo´
Order by data
(depois no form eu uso o esquema do parambyname no EDIT do form pra selecionar que eu quero o modelo ´GOL´)
Mas e se eu quiser que dentro dessa busca só me retorne os modelo ´GOL´ que sejam do ano ´1997´ e com cor ´AZUL´...
Como eu faço isso?
O que mais eu tenho que em SQL ou em Pascal pra que isso aconteça?
Desde já agradeço a todos!!!!
Bem...
Eu gostaria de saber se é possível fazer uma busca ´dentro´ de uma busca?
Tipo:
Tenho um BD Interbase onde tenho vários modelos de carros quando quero selecionar o modelo ´GOL´ (esse tipo de busca eu sei fazer)
Ex:
Select * from ACarros
Where Marca like ´Modelo´
Order by data
(depois no form eu uso o esquema do parambyname no EDIT do form pra selecionar que eu quero o modelo ´GOL´)
Mas e se eu quiser que dentro dessa busca só me retorne os modelo ´GOL´ que sejam do ano ´1997´ e com cor ´AZUL´...
Como eu faço isso?
O que mais eu tenho que em SQL ou em Pascal pra que isso aconteça?
Desde já agradeço a todos!!!!
Dark Knight
Curtidas 0
Respostas
Drakkar
01/02/2004
É só colocar sua SQL assim:
Select * from ACarros
Where Marca like :Modelo And
Ano=:Ano And
Cor=:Cor
Order by data
E depois passar os parametros antes de abrir a Query.
Flws.
Select * from ACarros
Where Marca like :Modelo And
Ano=:Ano And
Cor=:Cor
Order by data
E depois passar os parametros antes de abrir a Query.
Flws.
GOSTEI 0
Chico Gois
01/02/2004
Beleza!
Uma vez precisei fazer isso e achei esta dica legal em:
http://www.elivaldo.com.br/
Espero que ajude
Inté+
Uma vez precisei fazer isso e achei esta dica legal em:
http://www.elivaldo.com.br/
Normalmente a linguagem SQL possui flexibilidade o bastante para você obter os mais variados resultados de seleção de registros. Acontece que eventualmente você pode chegar a uma situação onde precisaria construir uma query com base no resultado de outra query. Aí complica, certo? Mas nestes caso você vai usar algumas API´s do BDE e o problema se tornará uma tarefa bem simples. Veja como: Vamos imaginar uma query simples, apenas para efeito de entendimento desta questão: Você possui uma tabela chamada vendas.db com os campos DataVenda e Valor. A nossa primeira query vai extrair o mês do campo DataVenda juntamente com o campo Valor. A sentença seria então a seguinte: SELECT EXTRACT(MONTH FROM datavenda) AS mes, valor FROM vendas Agora precisamos salvar o resultado dessa query em uma tabela. Mas como fazer? Vamos utilizar a API DbiSaveChanges para salvar a query e a API DbiGetCursorProps para obter o nome que o BDE utilizou para salvar a query. O código é o seguinte: var QrName: string; begin // salva a query em um arquivo temporário DbiSaveChanges(Query1.Handle); // obtém o nome do arquivo temporário e fecha a primeira query DbiGetCursorProps(Query1.Handle, Props); QrName := Props.szName; end; Feito isso basta fazer a segunda query com base no arquivo que acabamos de salvar. Veja como fica um código completo usando este recurso: procedure TForm1.Button1Click(Sender: TObject); var Props: CURProps; QrName: string; begin // abre a primeira query Query1.SQL.Text := ´SELECT EXTRACT(MONTH FROM datavenda) AS mes, valor FROM vendas´; Query1.Open; // salva a query em um arquivo temporário DbiSaveChanges(Query1.Handle); // obtém o nome do arquivo temporário e fecha a primeira query DbiGetCursorProps(Query1.Handle, Props); QrName := Props.szName; Query1.Close; // abre a segunda query pegando o resultado da primeira // que está salva no arquivo S Query2.SQL.Text := ´SELECT mes, SUM(valor) FROM "´ + QrName + ´" GROUP BY mes´; Query2.Open; ... // apaga o arquivo temporário da primeira query DeleteFile(QrName + ´.db´); end;
Espero que ajude
Inté+
GOSTEI 0