Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Obtener los registros mas recientes

Estas en el tema de Obtener los registros mas recientes en el foro de SQL Server en Foros del Web. Hola a todos estoy utilizando una base de dato de sql Server de ahi ponerlo en este foro bueno tengo las siguientes tablas: ---------------------- TablaRegistro ...
  #1 (permalink)  
Antiguo 07/06/2007, 09:36
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años, 1 mes
Puntos: 3
Obtener los registros mas recientes

Hola a todos estoy utilizando una base de dato de sql Server de ahi ponerlo en este foro
bueno tengo las siguientes tablas:
----------------------
TablaRegistro
----------------------
Usuario---->int
Fecha----->datetime
Hora------>datetime

----------------------
TablaUsuario
----------------------
Usuario----->int
Nombre----->Nvarchar(50)
email------->nvarchar(50)



En la tabla TablaRegistro están las entradas de los usuarios y querria saber como obtener los registros de la ultima entrada de usuarios con su nombre correspondiente.
Lo que he conseguido es que me saque los usuarios con la última entrada, es decir, con la fecha y la hora del ultimo usuario que entró para todos los usuarios, no con la última fecha y hora de cada uno.

En fin Muchas Gracias de antemano.
  #2 (permalink)  
Antiguo 07/06/2007, 11:45
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: Obtener los registros mas recientes

Que tal Expinete.

No entendi muy bien, estoy intuyendo que necesitas, la última entrada de cada usuario, OK?.

Intenta esto:

Código:
SELECT r.Usuario, u.Nombre,  MAX(r.Fecha), Max(r.Hora) 
FROM REgistro r INNER JOIN Usuario U 
    ON r.Usuario = u.Usuario
GROUP BY r.Usuario, u.Nombre
Sólo como recomendación, en la tabla Registro, quizá sea mejor manejar un solo campo Fecha, en lugar de dos Fecha y Hora, pues la Fecha y hora SQL Server los maneja en el mismo campo, es sólo una observación.


Saludos!!
  #3 (permalink)  
Antiguo 08/06/2007, 02:40
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años, 1 mes
Puntos: 3
Re: Obtener los registros mas recientes

Muchas Gracias Daniel, ahora entiendo el error que cometia, en el group by ponia tambien la fecha y la hora.

Muchas Gracias.

Al respecto de los campos fecha y hora, yo también lo haría como me has indicado pero no depende de mi en fin. Muchisimas Gracias Daniel.
  #4 (permalink)  
Antiguo 15/06/2007, 11:08
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años, 1 mes
Puntos: 3
Re: Obtener los registros mas recientes

Me acabo de dar cuenta de que hay un error en esta solución...
porque no coge la hora más "alta" del día correspondiente, si no que coge la más alta del usuario...es decir si tenemos este registro:

Usuario---Nombre---Fecha-----Hora
---------------------------------
1--------Juan------11/10/06--06:25
1--------Juan------12/10/06--03:10

Lo que obtenemos es:

1--------Juan------12/10/06--06:25

...
Es decir que me estoy haciendo la picha un lio
¿Algún alma caritativa que me pueda dar una solución?

Por cierto Daniel00 lo de quitar el campo hora y dejarlo todo dentro de fecha...desgraciadamente no depende de mi, ademas al parecer da una serie de problemas con lon intervalos de fechas(hablo de oidas, puede ser una excusa barata).
  #5 (permalink)  
Antiguo 16/06/2007, 14:43
 
Fecha de Ingreso: junio-2007
Ubicación: El Salvador
Mensajes: 21
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Obtener los registros mas recientes

Hola a ver si entendí lo que necesitas:
tabla UNO
usuario fecha hora
----------- ---------------------
1 2007-01-06 08:00:00.000
1 2007-01-06 09:00:00.000
2 2007-01-06 09:00:00.000
2 2007-01-06 23:00:00.000
2 2007-02-06 23:00:00.000

tabla DOS
usuario nombre correo
----------- ----------------------
1 prueba NULL
2 jesolorzano NULL


QUERY
usuario nombre fechamax horamax
----------- --------------------------------
2 jesolorzano 2007-02-06 23:00:00.000
2 jesolorzano 2007-01-06 23:00:00.000


Este es el código de la consulta:
Código:
select a.usuario,c.nombre,b.fechamax,b.horamax from UNO as a,
(select fecha as fechamax,max(hora) as horamax from UNO group by fecha) as b,DOS as c  where (fecha=b.fechamax and hora=b.horamax) and a.usuario=c.usuario
Avisanos si te sirve.

Saludos.
  #6 (permalink)  
Antiguo 18/06/2007, 01:12
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años, 1 mes
Puntos: 3
Re: Obtener los registros mas recientes

Estoy probando la consulta pero creo que no es eso lo que quiereo, lo que quiero obtener es todos los usuarios, con su última fecha y hora de acceso...
Intentaré explicarme un poco mejor...empecemos por una sola tabla en la que tenemos :

CodUsuario-----fecha---------Hora
------------------------------------
1------------01/01/2006------12:00
1------------02/01/2006------09:00
2------------01/01/2006------09:00
2------------02/01/2006------12:00

en la consulta aparecería:

CodUsuario-----fecha---------Hora
------------------------------------
1------------02/01/2006------09:00
2------------02/01/2006------12:00


En fin seguire investigando y probando nuevas opciones de todas formas muchas gracias
  #7 (permalink)  
Antiguo 18/06/2007, 02:23
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años, 1 mes
Puntos: 3
Re: Obtener los registros mas recientes

Bueno acabo de encontrar una solución... parece algo chapucera pero...funciona en fin ahi va:
Código PHP:
SELECT Tabla.codusuario,left(max(convert(nvarchar(10),Tabla.Fecha,103) + ' ' +convert(nvarchar(5),Tabla.Hora,108)),10) as Fecha,
right(max(convert(nvarchar(10),Menu.Fecha,103) + ' ' +convert(nvarchar(5),Menu.Hora,108)),5) as Hora
From TAbla
Group by Tabla
.CodUsuario 
en fin si a alguien se le ocurre otra forma soy todo oidos porque esta es la única que he encontrado.
En fin Muchas Gracias a tod@s.
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 17:20.