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)
-   -   Sacar el primer resultado de una consulta con varios (https://www.clubdelphi.com/foros/showthread.php?t=43166)

VRO 03-05-2007 19:20:34

Sacar el primer resultado de una consulta con varios
 
Hola, ¿que hay denuevo?

vereis he hecho una consulta en Interbase de la que obtengo varios resultados pero sólo me interesa plasmar el primer resultado que obtengo ¿Cómo debo hacerlo?

Gracias por todo.
PD: Utilizo interbase 5

jhonny 03-05-2007 19:39:22

Lo explicare con un ejemplo, si yo tengo una consulta que me traiga todos los campos de una tabla así:

Código SQL [-]
select * from Mi_Tabla

Pero quiero solo el primer registro, me bastaría con agregarle a esa consulta lo siguiente:

Código SQL [-]
select first 1 * from Mi_Tabla

Espero te sirva. ;).

VRO 04-05-2007 09:51:31

Gracias por tu respuest, pero al poner first 1 me da un error en el valor 1, yose que en MySql se ponía sólo first , pero si lo pongo sólo tampoco me lo coje.

Gracias por todo seguiremos investigando si se te ocurre otra solución te agradecería me la comentases.

Buen día

TJose 04-05-2007 14:49:10

Hola

first funciona a partir de la versión 1.0 de firebird, no estaba disponible en interbase, por eso el error que te produce.

el siguiente fragmento pertenece a The Dark Side of CppB de Ian Marteens

Cita:

Otro ejemplo: necesitamos conocer los diez mejores clientes de nuestra tienda. Pero
sólo los diez primeros, y no vale mirar hacia otro lado cuando aparezca el undécimo.
Algunos sistemas SQL tienen extensiones con este propósito (top en SQL Server;
fetch first en DB2), pero no InterBase. Este procedimiento, que devuelve un con-
junto de datos, nos servirá de ayuda:

Código SQL [-]
create procedure MejoresClientes(Rango integer)
returns (Codigo int, Nombre varchar(30), Total int) as
begin
for select Codigo, Nombre, sum(Total)
    from   Clientes, Pedidos
    where  Clientes.Codigo = Pedidos.Cliente
    order  by 3 desc
    into   :Codigo, :Nombre, :Total do
begin
suspend;
Rango = Rango - 1;
if (Rango = 0) then
exit;
end
end ^

Entonces podremos realizar consultas como la siguiente:

Código SQL [-]
select *
from   MejoresClientes(10)

Una cosa interesante, disponible en FB es la combinación de first con skip

Saludos
TJose

jhonny 04-05-2007 15:50:56

Cita:

Empezado por VRO
Gracias por todo.
PD: Utilizo interbase 5

Disculpa, por puro descuido mio no había notado que usabas Interbase y menos que era el 5. La solución de TJose es una manera viable de hacerlo.

gluglu 04-05-2007 16:23:14

Para Interbase

Código SQL [-]
Select * from Tabla rows 1


La franja horaria es GMT +2. Ahora son las 05:38:54.

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