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

Ultimo acceso de usuarios en una sola tabla mysql

Estas en el tema de Ultimo acceso de usuarios en una sola tabla mysql en el foro de Mysql en Foros del Web. Que tal, soy nuevo en este foro, tengo el siguiente problema: Tengo una tabla en MySql llamada accesos con los siguientes campos: Acceso, Usuario, Fecha, ...
  #1 (permalink)  
Antiguo 08/03/2011, 19:43
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta Ultimo acceso de usuarios en una sola tabla mysql

Que tal, soy nuevo en este foro, tengo el siguiente problema:

Tengo una tabla en MySql llamada accesos con los siguientes campos: Acceso, Usuario, Fecha, Hora, Ip

En dicha tabla se registran los accesos a cierta dirección web después de que el usuario ha sido logueado exitosamente.

A continuación les dejo un ejemplo, que espero se entienda (porque no logro poner por aquí una tabla en formato html para que sea mas gráfico jeje, una disculpa, recuerden que soy nuevo en esto).

Acceso Usuario Fecha Hora Ip
1 Juan 2010-12-31 12:16:11 123.45.67.879
2 Pancho 2011-01-11 14:13:25 123.45.67.925
3 Pedro 2011-01-15 14:30:21 123.45.67.100
4 Juan 2011-01-16 12:18:20 123.45.67.879
5 Pancho 2011-01-18 18:43:55 123.45.67.925
6 Pedro 2011-01-22 14:40:12 123.45.67.100
7 Juan 2011-01-30 12:01:14 123.45.67.879

El resultado que deseo obtener de una sola consulta es el último registro de acceso a la direccion web de cada usuario, es decir:

Acceso Usuario Fecha Hora Ip
5 Pancho 2011-01-18 18:43:55 123.45.67.925
6 Pedro 2011-01-22 14:40:12 123.45.67.100
7 Juan 2011-01-30 12:01:14 123.45.67.879

Yo lo quise hacer con un GROUP BY
Pero si lo hago mediante un GROUP BY me muestra el primer registro, aquí les dejo la consulta y el resultado devuelto:
select Acceso, UsuarioId, Fecha, Hora, Ip from accesos group by UsuarioId order by Fecha ASC

Acceso Usuario Fecha Hora Ip
1 Juan 2010-12-31 12:16:11 123.45.67.879
2 Pancho 2011-01-11 14:13:25 123.45.67.925
3 Pedro 2011-01-15 14:30:21 123.45.67.100

He logrado hacerlo con dos consultas desde un script PHP pero necesito hacerlo en una sola para el tema de filtrados, en la primer consulta, obtengo todos los usuarios únicos mediante un DISTINCT y luego, en el ciclo, en la segunda consulta obtengo el ultimo accesoId del usuario mediante un limit 1 ordenando con "WHERE Usuario='$Usuario' ORDER BY Acceso DESC LIMIT 1"

Alguien sabe como hacerlo con un solo query?

Saludos desde Monterrey, México y muchas gracias de antemano
  #2 (permalink)  
Antiguo 09/03/2011, 04:33
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: Ultimo acceso de usuarios en una sola tabla mysql

Si ordenas por FECHA ASC te dará primero la fecha más antigua, no la más nueva, si ordenas por FECHA DESC te dará la más reciente.
  #3 (permalink)  
Antiguo 09/03/2011, 16:47
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ultimo acceso de usuarios en una sola tabla mysql

No, si lo ordeno por fecha, me trae simplemente el primer registro de cada usuario y cada uno de esos registros lo ordena por fecha.

Es decir, el resultado es el siguiente:

Acceso Usuario Fecha Hora Ip
3 Pedro 2011-01-15 14:30:21 123.45.67.100
2 Pancho 2011-01-11 14:13:25 123.45.67.925
1 Juan 2010-12-31 12:16:11 123.45.67.879

Mas gráfico es:
Pedro: 2011-01-15,
Pancho: 2011-01-11
Juan: 2010-12-31

Mi resultado esperado debería ser:
Pancho: 2011-01-18
Pedro 2011-01-22
Juan 2011-01-30

Gracias por tu ayuda Heimish2000.
  #4 (permalink)  
Antiguo 10/03/2011, 01:41
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: Ultimo acceso de usuarios en una sola tabla mysql

Código sql:
Ver original
  1. SELECT usuario, MAX(fecha) AS fec
  2. FROM tabla
  3. GROUP BY usuario
  4. ORDER BY fec DESC
  #5 (permalink)  
Antiguo 10/03/2011, 10:33
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ultimo acceso de usuarios en una sola tabla mysql

Perdon, me equivoqué en mi segundo post al escribir el resultado deseado, porque como bien tu lo explicas en tu query, si deseara solamente el usuario y la fecha con un MAX sería suficiente.

Mi problema radica en que deseo obtener el último registro completo de acceso, no solo la fecha, es decir, algo como lo siguiente:

Acceso Usuario Fecha Hora Ip
5 Pancho 2011-01-18 18:43:55 123.45.67.925
6 Pedro 2011-01-22 14:40:12 123.45.67.100
7 Juan 2011-01-30 12:01:14 123.45.67.879

Que me muestre la ultima fecha de acceso, la última hora de acceso y su última Ip de acceso.

Si lo hago así:
select Acceso, Usuario, MAX(Fecha), Hora, Ip from accesos group by Usuario order by Fecha ASC
Solo me traerá la fecha mas reciente, pero la hora del primer acceso y la ip del primer acceso registrado hace unos meses.


Muchas gracias nuevamente por tu tiempo y tu aportación mi hermano.

Etiquetas: registro, ultimo, jquery-mobile
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 20:57.