Existe Limit no IB?

Firebird

31/01/2007

Saudações,
estou com uma dúvida simples. Estou com Delphi 7 e Interbase 6 e estou usando o seguinte sql:
select matricula from aluno where matricula <= ´5´ order by matricula desc
.
Esta consulta me retorna 5 registros(5,4,3,2,1, respectivamente) porém eu gostaria de pegar apenas os registros 5 e 4. No PostgreSQL existe a opção limit ficando assim:
select matricula from aluno where matricula <= ´5´ order by matricula desc limit 2
.
No Interbase como faço isso?
Muito obrigado.


Zooropa

Zooropa

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

31/01/2007

select matricula
from aluno
where matricula in (´4´, ´5´)
order by matricula desc

ou

select matricula
from aluno
where matricula between ´4´ and ´5´
order by matricula desc

ou

select matricula
from aluno
where matricula > ´3´ and matricula < ´6´
order by matricula desc

ou troque para firebird e tente ainda:

select first 2 matricula
from aluno
where matricula <= ´5´
order by matricula desc


GOSTEI 0
Zooropa

Zooropa

31/01/2007

Saudações Emerson,
só hoje eu pude ler sua resposta mas neste caso não é que eu queira pegar um item específico, eu quero pegar os dois primeiros (coloquei os números 4 e 5 apenas para exemplificar). Eu preciso pegar sempre o primeiro ou os dois primeiros registros da consulta (estou criando botões de navegação semelhantes ao DBNavigator, neste caso o número 5 seria o último registro - o botão last e o código 4 seria o penúltimo o botão Anterior). Com esta resposta irei implementar minha query para os outros botões.
Agradeço a ajuda


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

31/01/2007

no Firebird seria tão simples quanto no Postgree, com o uso da cláusula FIRST, mas no interbase 6 creio que só com stored procedure mesmo.


GOSTEI 0
Ehimura

Ehimura

31/01/2007

Olá cara...
espero poder ajudar...

para pegar o ultimo registro no IB6, faça o seguinte:

select matricula from aluno where matricula = (select max(matricula) from aluno);

Espero ter ajudado...
abraços


GOSTEI 0
Rafaelbahr

Rafaelbahr

31/01/2007

faça da seguinte forma:



select first 2 matricula from aluno where matricula <= ´5´ order by matricula desc

isto significa os dois primeiros

se quiser os dois ultimos tira o desc do order by


GOSTEI 0
POSTAR