Fórum SQL #185729

02/10/2003

0

Como faço para realizar um select numa tabela onde eu tenho intervalo de dados. Por exemplo:
Eu tenho uma tabela com 50 registros, digamos que o usuários quer realizar uma pesquisa entre os registros 10 a 25...
Como monto uma SQL para este tipo de consulta?


Marcela

Marcela

Responder

Posts

02/10/2003

Marcelo.c

SELECT * FROM tabela WHERE codigo BETWEEN 10 AND 25


Responder

Gostei + 0

02/10/2003

Edineidaniel

Olá,

No OnClick do Button
query1.close;
query1.SQL.Clear;
query1.sql.add(´select * from tabela´);
query1.sql.add(´where campo >= :cod1 and campo<=:cod2´);
query1.sql.add(´order by datainicial´);
query1.params[0].AsInteger := StrToInt(Edit1.text);
query1.params[1].AsInteger := StrToInt(Edit2.text);
query1.open;
query1.active:=true;

Ai é so listas esta consulta em um grid...

walew
t+

Edinei


Responder

Gostei + 0

02/10/2003

Marcela

Isso não dá certo porque na tabela não tem codigo sequencial....


Responder

Gostei + 0

02/10/2003

Edineidaniel

.....

Qual é o campo chave de sua tabela....????
Ou melhor quais os campos que vc possui em sua tabela...????

que sabe com esses dados adicionais podemos formular um SQL diferente...

t+

Edinei


Responder

Gostei + 0

02/10/2003

Marcela

Os campos da minha tabela são:
Cod da estação, que não é sequencial (número grande e varialvel)
Data e Hora, estes são chaves primárias
O restante são dados de leitura que não me interessam...


Responder

Gostei + 0

02/10/2003

Edineidaniel

Marcela,

Deve a haver algum dados importante em meio a sua tabela para q vc queira selecionar dados do meio...

Não encontrei outra maneira de te ajudar...
quem sabe tente o código acima, mas com o campo data ou hora, tanto faz, é só mudar o valor dos parâmetros....

t+

Edinei


Responder

Gostei + 0

02/10/2003

Fava

Veja o exemplo abaixo... variando-se o comando select (alterando-se a clausula where, order by, etc...) pode-se obter os últimos X registros, etc... etc...

CREATE PROCEDURE RETORNA_X_REGISTROS (NUM_ROWS INTEGER)
RETURNS (lista de campos que voce quer que retorne)
AS
declare variable counter integer;
begin
counter = 0;
for select (campos que voce quer que retorne)
from Sua_Tabela
order by campo_chave_primária
into
:Variaveis de retorno que recebem o valor dos campos acima
do begin
if (:counter >= :NUM_ROWS) then exit;
suspend;
counter = counter + 1;
end
end

PS: O Firebird e o Interbase 6.5 possuem clausulas especiais para o SELECT que permitem a paginação dos dados retornados


Responder

Gostei + 0

03/10/2003

Marcelo.c

Dê uma olhada em:

http://delphiforum.icft.com.br/forum/viewtopic.php?t=23490


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar