Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Encontrar primer registro que cumpla condición (https://www.clubdelphi.com/foros/showthread.php?t=59463)

mike_1979 27-08-2008 21:31:19

Encontrar primer registro que cumpla condición
 
Hola a todos, espero que se encuentren bien, yo estoy un poco enfermo pero bue... vamos al tema q me ocupa: necesito realizar una consulta que me devuelva el primer registro que cumpla la condición, por ejemplo el primer cliente cuyo saldo sea mayor que 150. Estuve trabajando con otro sistema de base de datos que tiene las instrucciones:
Código:

FIND FIRST TABLA1 WHERE ....
 
 FIND LAST TABLA1 WHERE....

Quiero saber si con SQL hay instrucciones similares que devuelvan un solo resultado. Desde ya les agradezco mucho si pueden ayudarme.

Caral 27-08-2008 21:34:26

Hola
Me parece que se puede hacer una sentencia que cumpla con el primer requisito (que el saldo sea mayor que 150) y poner un order by para que cumpla con el siguiente requisito que seria o bien la antigüedad por fecha u otro.
Saludos

Delphius 27-08-2008 21:36:37

Hola mike_1979,
Para ayudarte deberíamos conocer con que motor de base de datos estás trabajando. No todos los motores tienen la misma sintaxis, muy a pesar de haber un estandar.

En el caso de Interbase/Firebird para obtener los x primeros registros se emplea FIRST:

Código SQL [-]
select FIRST 1 tus_campos
from tu_tabla
where la_condicion

En el caso de SQL Server es TOP:

Código SQL [-]
select TOP 1 tus_campos
from tu_tabla
where la_condicion

Desconozco en otros motores. Si nos indicaras tal vez podríamos ayudarte.

Saludos,

mike_1979 27-08-2008 21:37:15

Hola Caral, gracias por responder, con una consulta así tambien podria devolverme mas de un registro, yo necesito indicarle que me devuelva sólo uno y nada mas q uno

Caro 27-08-2008 21:38:21

Hola, no te sirve utilizar First o Top. ¿Que base de datos estas utilizando?

Código SQL [-]
 Select First 1 campo1, campo2 from tabla where salario>150

Saluditos

Caral 27-08-2008 21:38:54

Hola
Perdona amigo me equivoco o esta sentencia lo que te devuelve es un solo registro, no necesariamente el primero?
Saludos

mike_1979 27-08-2008 21:42:31

Hola Caro, estoy utilizando SQL Server, lo que puse de find first es a modo de muestra esas sentecias las tiene Progress y son muy utiles, ahora pruebo con las que me pones acá y te aviso, muchas gracias

maeyanes 27-08-2008 21:42:48

Hola...

¿Y que motor de base de datos usas? Por que como bien dices, dependiendo de este te podríamos decir que condición usar...

Ahora, también podrías probar usando la función Min de SQL:

Código SQL [-]
select Min(Saldo) from Tabla where Saldo > 150

Esto te debería devolver lo que buscas:


Saludos...

Caro 27-08-2008 22:01:13

Hola de nuevo, entonces tienes que hacerlo con Top, ademas si quieres el salario minimo debes hacer un order by por salario.

Código SQL [-]
 Select top 1 * from tabla where salario>150 order by salario

O utilizar lo que te indica mayanes con Min.

Saluditos

mike_1979 27-08-2008 22:02:25

muchisimas gracias Maeyanes, era justo lo que necesitaba. saludos.

mike_1979 27-08-2008 22:03:06

Gracias a vos tambien Caro. Saludos


La franja horaria es GMT +2. Ahora son las 19:28:59.

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