Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Limit En Firebird,como? (https://www.clubdelphi.com/foros/showthread.php?t=19996)

ELINK 02-04-2005 00:35:15

Limit En Firebird,como?
 
ESTA ES MI SENTENCIA:
select NUM from REGTRANF ORDER BY NUM DESC LIMIT 200
Y ME DA ERROR,ALGUNA SUGERENCIA??? :confused: :confused:

jachguate 02-04-2005 00:47:38

en realidad varias:

Lee la guia de estilo, donde verás que no es bien visto por aqui ESCRIBIR EN MAYÚSCULAS....

También lee el hilo de la calidad de las preguntas y por último, replanteá la cuestión siguiendo los consejos que encontres por alli.

Saludos.

;)

ELINK 02-04-2005 03:14:02

Consejo Para Todos Menos Para Mi
 
PRIMERO:
"Lee la guia de estilo, donde verás que no es bien visto por aqui ESCRIBIR EN MAYÚSCULAS...."
-si bien tienes razón NO ESPARA QUE TE LO TOMES TAN A PECHO

SEGUNDO:
"También lee el hilo de la calidad de las preguntas y por último, replanteá la cuestión siguiendo los consejos que encontres por alli."

A buen entendedor pocas palabras es una sentencia simple en donde el error aparece al agregarle a este "limit 200".

Y TERCERO:
TU intervencion lejos de ayudarme a hecho que reacciones de esta manera y me lleve una mala impresion de los moderadores (o de por lo menos UNO) al responder a mi pedido de ayuda de una manera sarcastica como tu lo has hecho.

Gracias.(Por nada)(En Esta Ocasion :D )

Casimiro Notevi 02-04-2005 13:45:53

Bueno, no hace falta enfadarse, a veces ocurren malos entendidos porque en un medio escrito como este, el no poder ver las caras y gestos del que te habla (escribe), puede llevarte a confusión, pero seguro que ha sido una pequeña "reprimenda" sin mala intención.

En cuanto a tu pregunta, creo recordar que la sentencia debería ser algo así:

Código:

  select first 200 NUM from REGTRANF ORDER BY NUM DESC
Te hablo de memoria, mejor mira la documentación para asegurarte.

ELINK 02-04-2005 16:57:05

Gracias por tu ayuda Casimiro Notevi, pero otro pregunta:esta sentencia funciona bien para los 200 "primeros"
select first 200 NUM from REGTRANF ORDER BY NUM DESC
pero para los 200 "ultimos" deveria de ser asi verdad?
select last 200 NUM from REGTRANF ORDER BY NUM DESC
el problema es que va error :confused: :confused:

marcoszorrilla 02-04-2005 17:48:10

Si los ordenas por orden descendente los 10 primeros son los 10 últimos. De lo contrario me temo que vas a tener que hacer algo tan enrevesado como esto:
Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 var
 nReg:Integer;
 begin
 Ibquery1.Close;
 Ibquery1.Sql.Clear;
 IbQuery1.SQL.Add('Select Count(*) from Clientes');
 IbQuery1.Open;
 nReg:=IbQuery1.Fields[0].AsInteger;
 
 Ibquery1.Close;
 Ibquery1.Sql.Clear;
 IbQuery1.SQL.Add('Select first 10 Skip('+IntToStr(nReg)+'- 10)');
 IbQuery1.SQL.Add('NOMBRE, TITULAR, POBLACION from Clientes');
 ShowMessage(ibquery1.sql.Text);
 IbQuery1.Open;
 
 end;

Un Saludo.

ELINK 02-04-2005 19:16:56

Gracias
 
Tenias razon con lo primero y menos mal que no tuve q intentar lo segundo :D :D :D
Gracias por tu Ayuda ;)

micayael 09-12-2005 15:27:32

Hola.
El LIMIT tengo entendido que permite hacer LIMIT desde,hasta hay forma de hacer eso de la manera que están hablando

jachguate 09-12-2005 15:49:38

Cita:

Empezado por micayael
Hola.
El LIMIT tengo entendido que permite hacer LIMIT desde,hasta hay forma de hacer eso de la manera que están hablando

¿estas tratando de decir que no puede hacerse?
Efectivamente, con SQL puro no puede hacerse, pero ya Marcos ha dado una solución basada en Delphi + SQL que, a pesar de ser "enrevesado", si que funcionaría.

Hasta luego.

;)

micayael 09-12-2005 17:16:45

No dije que no se puede. _Solo que con el LIMIT de mySQL se puede hacer eso con SQL puro y queria saber si se puede en firebird.

No conozco Delfi yo. Si por ahi puedes explicar el codigo te lo agradeceria.
Un abrazo.

jachguate 10-12-2005 03:41:51

Pues si te fijas en el SQL, se explica solito...

En mis palabras sería:

Obtener el número total de registros almacenados en la tabla de clientes
Obtener 20 registros saltandose (el total - 20) de la tabla de clientes. Resultado: Los últimos 20 clientes.

Hasta luego.

;)

rastafarey 12-12-2005 15:06:43

Resp
 
Haber si esto te sirve
Código SQL [-]
/*Los 2 primeros*/
Select First 2 Skip 0 "Codigo" From "Inventario" Order By "Codigo"
/*Los dos Siguientes*/
Select First 2 Skip 2 "Codigo" From "Inventario" Order By "Codigo"
/*Los dos Siguientes*/
Select First 2 Skip 4 "Codigo" From "Inventario" Order By "Codigo"
/*Los dos Siguientes*/
Select First 2 Skip 6 "Codigo" From "Inventario" Order By "Codigo"
First Te Indica Cuantos quieres devolver y Skip desde donde quieres comenzar
y para tu caso smallint hay 50(= N) registros
Código SQL [-]
Select First 20 Skip ("N" - 20) "Codigo" From "Inventario" Order By "Codigo"
Y otra manera seria hacer la busqueda ordenando en orden inverso
y luego ordenar de lamanera que quieres

El problema es de este ultimo ejemplo es que solo funciona en firebir 2 ya que es la version que soporta tablas derivadas
Código SQL [-]
Select "Codigo" From (
Select First 20 Skip 0 "Codigo" From "Inventario" Order By "Codigo" Desc) Order By "Codigo" Asc
Aunque creo que puedes encontrar otra solucion

micayael 12-12-2005 20:42:03

perfecto rastafarey eso era lo que necesitaba. Gracias


La franja horaria es GMT +2. Ahora son las 11:16:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi