Foros del Web » Programando para Internet » ASP Clásico »

como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicacion

Estas en el tema de como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicacion en el foro de ASP Clásico en Foros del Web. Un saludo: Necesito listar los 3 últimos registros de una tabla ordenados por fecha de publicación. ¿Alguien sabe como hacerlo? Gracias...
  #1 (permalink)  
Antiguo 11/06/2007, 05:01
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicacion

Un saludo:
Necesito listar los 3 últimos registros de una tabla ordenados por fecha de publicación.
¿Alguien sabe como hacerlo?
Gracias
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #2 (permalink)  
Antiguo 11/06/2007, 07:35
 
Fecha de Ingreso: diciembre-2005
Mensajes: 20
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

lo que puedes hacer es un recorrido del recordset en sentido contrarioalgo asi:

dim x

'Primero llevas el cursor del recorset al ultimo registro

RS.MoveLast

'luego lo recorres
x = 0

do while not RS.BOF and x < 3

'aqui imprimes en patalla lo que necesitas mostrar

'Ahora retrocedes un registro
RS.MovePrevious
x = x + 1

Loop

Bueno espero te sirva de algo
  #3 (permalink)  
Antiguo 11/06/2007, 07:44
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

SELECT TOP 3 * FROM tabla ORDER BY fechapublicacion DESC
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #4 (permalink)  
Antiguo 11/06/2007, 11:20
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Pues aparentemente funcionaba, pero hay un problema:
cuando en el campo fechapublicacion hay más de 3 registros con la misma fecha, no coge los 3 últimos sino que todos los que tienen la misma fecha
__________________

Espero haber aprendido algo de tí.
A mi padre.

Última edición por ciberpata; 11/06/2007 a las 11:48
  #5 (permalink)  
Antiguo 11/06/2007, 11:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

SELECT TOP 3 hace que te regresen 3 y solo 3 registros, sin importar cuantos hayan en la consulta
  #6 (permalink)  
Antiguo 11/06/2007, 12:21
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

No es tan así. Supongamos esta tabla:

Código:
id	fecha		texto
1	11/06/2007	1
2	11/06/2007	2
3	11/06/2007	3
4	10/06/2007	4
5	09/06/2007	5
La consulta SELECT TOP 3 * FROM tabla nos devuelve:

Código:
id	fecha		texto
1	11/06/2007	1
2	11/06/2007	2
3	11/06/2007	3
Pero la consulta SELECT TOP 3 * FROM tabla ORDER BY fecha nos devuelve:

Código:
id	fecha		texto
5	09/06/2007	5
4	10/06/2007	4
3	11/06/2007	3
2	11/06/2007	2
1	11/06/2007	1

¿Por qué? pues no sé, pero así funciona ;)
  #7 (permalink)  
Antiguo 11/06/2007, 14:16
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

mmmmm, pues si tu lo dices, por supuesto que te creo, aunque yo no he logrado que me salgan mas de tres registros en mis consultas:

SELECT TOP 3 IdCliente, idgrupo, [TimeStamp] from clientes order by [TimeStamp]

Código:
43  0	2003-08-29 15:32:52.000	
0    0	2003-09-11 00:00:00.000	
30 39  2003-12-03 09:30:17.000
SELECT TOP 3 * from Facturas order by Fecha

todo igual .... es decir, correcto
  #8 (permalink)  
Antiguo 11/06/2007, 14:29
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Ese ejemplo lo acababa de hacer en una BD access. Los datos aquí colocados son un copy&paste de los resultados obtenidos al ejecutar sendas consultas.
Lo hice para verificar, ya que en otra ocasión me ocurrió lo que ciberpata comenta.

¿Será cosa de la BD? ¿Sobre qué BD probaste, master?

Un saludos
  #9 (permalink)  
Antiguo 11/06/2007, 14:31
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Estoy casi seguro que debe ser una cosa del nivel de precisión de la base de datos sobre este campo, SQL regresa solamente el número de registros que se le indique, no tengo Access a la mano para hacer la prueba pero como AZ la hizo ya, supongo que por ahí va el asunto.

Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 11/06/2007, 14:36
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Igual, veo una pequeña diferencia:

En tu ejemplo tenés 3 registros con fechas DISTINTAS (29/8/2003, 11/09/2003 y 3/11/2003). En el mío hay 3 registros que tienen la misma fecha (11/6/2007).
Ahora... ¿qué ocurre si en mi ejemplo el campo FECHA fuese un timestamp? Estoy seguro que me devolvería (casi) siempre sólo 3 registros (digo casi porque puede ocurrir que más de un registro tenga la misma fecha, hora, minutos y segundos).

Investigaré
  #11 (permalink)  
Antiguo 11/06/2007, 14:44
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

SELECT TOP 5 * FROM tabla ORDER BY revision_date DESC

Código:
39	35	1	1	1	2007-06-08 13:56:08.380	1	0	 	11913
36	31	1	1	0	2007-06-08 12:05:16.833	1	3		11909
36	32	0	1	1	2007-06-08 12:05:16.833	1	0	 	11910
31	26	1	1	0	2007-06-05 18:38:02.067	1	3		11902
31	27	0	1	1	2007-06-05 18:38:02.067	1	0	 	11904
Los últimos dos registros tienen exactamente la misma fecha, si hago un SELECT TOP 4, solo trae los 4 que se le indicaron dejando afuera al último registro con la misma fecha que el 4to.

Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 11/06/2007, 15:40
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Cita:
¿Por qué? pues no sé, pero así funciona ;)
....
Investigaré

Cita:
The problem sneaks in when there's a duplicate value in the last returned record.

...
As you can see, Jet SQL returns 10 records, not nine, as requested in the TOP clause. That's because the ninth (last) value is duplicated and Jet doesn't know which record to include.

Fuente
Cita:
Iniciado por Al Zuwaga Ver Mensaje
Código:
id	fecha		texto
5	09/06/2007	5
4	10/06/2007	4
3	11/06/2007	3
2	11/06/2007	2
1	11/06/2007	1


Saludos
  #13 (permalink)  
Antiguo 11/06/2007, 15:41
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Jet es tonto je je je, gracias por la aclaración AZ
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #14 (permalink)  
Antiguo 11/06/2007, 15:59
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

hasta estos últimos post caí en cuenta que el asunto era con access, y efectivamente en access también me trae de más con la misma tabla importada.

Gracias igual por el dato A_Z
  #15 (permalink)  
Antiguo 11/06/2007, 16:43
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Cita:
Iniciado por u_goldman Ver Mensaje
Jet es tonto je je je, gracias por la aclaración AZ
Jejeje, me causa gracia ese comentario ;)
No es que quiera hacer una defensa de JET, pero si podemos decir que este es tonto, también podríamos decir que T-SQL es autoritario. ¿En base a qué deja de lado el 5to registro -según tu ejemplo, u_g- en vez del 4to? O sea... ¿tiene una lógica para hacer eso? Supongo que si, pero... ¿cuál?

Saludos
  #16 (permalink)  
Antiguo 11/06/2007, 17:05
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Cita:
¿En base a qué deja de lado el 5to registro -según tu ejemplo, u_g- en vez del 4to? O sea... ¿tiene una lógica para hacer eso? Supongo que si, pero... ¿cuál?
Pues a la simple petición del usuario de que quería 4 registros, no 5 ni más, solo 4, si el 4 y el 5 son exactamente iguales en base a la selección, pues razón de más para eliminar el 5o.
  #17 (permalink)  
Antiguo 11/06/2007, 17:25
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

He ahí el asunto! El registro 4 y el 5 no son exactamente iguales!
Entonces, ante un ordenamiento como el que u_g le dio (revision_date DESC)... ¿cómo hace para discernir cuál es el 4to y cuál es el 5to si ambas fechas son idénticas y no existe un criterio de ordenamiento extra?

¿Y si, ante un TOP 4, el registro que nosotros esperábamos era el 5 en vez del 4?
  #18 (permalink)  
Antiguo 11/06/2007, 17:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Cita:
Iniciado por Al Zuwaga Ver Mensaje
He ahí el asunto! El registro 4 y el 5 no son exactamente iguales!
Entonces, ante un ordenamiento como el que u_g le dio (revision_date DESC)... ¿cómo hace para discernir cuál es el 4to y cuál es el 5to si ambas fechas son idénticas y no existe un criterio de ordenamiento extra?

¿Y si, ante un TOP 4, el registro que nosotros esperábamos era el 5 en vez del 4?
Se me haría muy raro el caso que realmente requiera el 4to en lugar del 5to, pues cuando haces una selección de ese tipo, no es para nada demasiado específico. Si tiene sentido que al no saber que registro discriminar, traiga todos aquellos involucrados, pero me parece contradictorio al mismo tiempo, traeme el top 3, y me trae el top 4.

Creo que la moraleja es, si realmente estas tratando tus datos de una manera delicada, necesitarás ser tan específico como sea posible, si esto no es así, agrega una condición extra para mostrar solamente el top X que querías desde el principio, pues de otra manera un TOP 3, podría traer un TOP 4 je je je.

Esta es una de esas ocasiones para decir: "No lo discuto, yo no hago las reglas, solo las sigo..."


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #19 (permalink)  
Antiguo 11/06/2007, 17:59
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

A ver, no estoy defendiendo ni atacando nada. Simplemente me pregunto algunas cosas en voz alta para tratar de quitarme la nebulosa post-fin de semana que tengo ;)

Creo, u_g, que tu último mensaje se me hace muy esclarecedor. Ahora tengo una cita con la TV (¡patético, lo admito!) pero mañana trataré de... nah.... realmente tu moraleja lo dice todo: tratar de ser lo más específico posible en tu SQL, sobre todo ante casos "sumamente raros" (tu primer párrafo)

Saludos
  #20 (permalink)  
Antiguo 11/06/2007, 18:23
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Nah, yo tampoco estaba en un toma y daca, también me sorprendió este asunto, y sí, es realmente extraño, que diablos, que sea lo que tenga que ser je je je je
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #21 (permalink)  
Antiguo 12/06/2007, 02:29
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Re: como listar los 3 últimos registros en una DB ACCESS ordenados por fecha publicac

Interesante disertación, masters pero...

Cita:
Iniciado por ciberpata Ver Mensaje
Un saludo:
Necesito listar los 3 últimos registros de una tabla ordenados por fecha de publicación.
¿Alguien sabe como hacerlo?
Gracias
ciberpata, hablas de 3 ultimos registros, no de fechas distintas. ¿Podrías especificar más lo que quieres?




Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:34.