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)
-   -   Seleccionar un numero determinado de registros de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=61866)

NPIdea 25-11-2008 09:25:35

Seleccionar un numero determinado de registros de una tabla
 
Hola.

Quiero realizar una tabla con multitud del localizaciones, pero cuando modifique una de ellas quiero que en la misma se me duplique el registro y así tener referencias en la misma tabla de los cambios hechos en el tiempo.

La solución es hacer una tabla histórico de cambios, pero a ver si puedo hacer una sentencia que me devuelva todas las localizaciones y con la fecha más reciente.

Por ejemplo si la tabla tuviese:

1 - 01/10/2003
2 - 01/01/2008
3 - 12/12/2004
1 - 02/11/2006
2 - 05/06/2008

etc,

que me muestre

3 - 12/12/2004
1 - 02/11/2006
2 - 05/06/2008


Gracias.

Neftali [Germán.Estévez] 25-11-2008 10:06:55

Ejecuta una consulta SQL con ORDER BY para obtener el orden ascendente y un TOP (la mayoría de SGBD tiene TOP) para determinar cuantos registros quieres.

Código SQL [-]
  SELECT TOP 3 * FROM TABLA ORDER BY Fecha DESC
  SELECT TOP 10 * FROM TABLA ORDER BY Fecha ASC

NPIdea 25-11-2008 10:17:00

Gracias, pero de esta forma

1 - 01/10/2003
2 - 01/01/2008
3 - 12/12/2004
1 - 02/11/2006
2 - 05/06/2008

creo que daría respuesta:

2 - 01/01/2008
1 - 02/11/2006
2 - 05/06/2008

en vez de

3 - 12/12/2004
1 - 02/11/2006
2 - 05/06/2008


edito:

Podría hacer un Group by y coger los ultimos por fecha.

Gracias por tu respuesta

Neftali [Germán.Estévez] 25-11-2008 12:54:20

:confused::confused:
No se porqué (tal vez me he perdido algo), pero si es un campo fecha y ordenas por fecha ascendente, lo lógico es que te lo devuelva por fecha ascendente.

Así:
3 - 12/12/2004
1 - 02/11/2006
2 - 05/06/2008

Repito, salvo que yo me esté perdiendo algo...

Caro 25-11-2008 13:24:47

Cita:

Empezado por Neftali (Mensaje 327834)
:confused::confused:
No se porqué (tal vez me he perdido algo), pero si es un campo fecha y ordenas por fecha ascendente, lo lógico es que te lo devuelva por fecha ascendente.

Repito, salvo que yo me esté perdiendo algo...

Hola Neftali, creo que lo que quiere el amigo es obtener el maximo de la fecha por año, es lo que yo le he entendido, si fuera así, podría servir esta consulta:

Código SQL [-]
Select Max(fecha) From Tabla
Group By Extract(Year From fecha)

Saluditos

cahp 25-11-2008 18:30:54

Hola a todos,

Código SQL [-]
select codigo, max(fecha)
from tabla 
group by codigo

esto te devuelve la ultima fecha de cada uno de los codigos.

Saludos

Neftali [Germán.Estévez] 25-11-2008 18:48:53

Cita:

Empezado por Caro (Mensaje 327837)
Hola Neftali, creo que lo que quiere el amigo es obtener el maximo de la fecha por año, es lo que yo le he entendido,

...ves como me estaba perdiendo algo.:D:D:D

Ahora lo vuelvo a leer y también me parece que es eso, pero antes..., pues que no me quedaba claro.

rastafarey 26-11-2008 19:47:53

resp
 
Perdon no habia leido bien el texto. Solo habia leido el titulo

rastafarey 26-11-2008 19:50:46

Te recomiendaria Tener otra tabla para lo uqe dices. Y etso lo podrias hacer en los disparadores.


La franja horaria es GMT +2. Ahora son las 20:34:34.

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