MySQL - Seleccion del mas reciente

 
Vista:
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Seleccion del mas reciente

Publicado por Jesus (12 intervenciones) el 14/11/2018 14:49:09
Hola; vaya por delante mi agradecimiento por vuestra colaboración. Expongo mi necesidad para la cual no encuentro forma de hacer la SELECT correspondiente para obtener los resultados esperados.

Tengo dos tablas una de usuarios y otra de movimientos en la que registro los accesos al sistema. En la tabla de movimientos tengo un campo estado que indica 1=Entra y 2=Sale

Intento hacer una selección que me diga los usuarios que están dentro (ultima vez que entraron) (Estado=1 y no salieron (no hay Estado=2).

usuarios_dentro

Ruego me perdoneis que no añada ninguna de las selecciones que he intentado pero es que con ninguna consigo los resultados que necesito
Agradezco cualquier sugerencia.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Xavi
Val: 39
Ha aumentado su posición en 2 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Seleccion del mas reciente

Publicado por Xavi (14 intervenciones) el 14/11/2018 16:41:37
Hola Jesus, la manera que yo utilizaría, es coger los últimos registro de cada usuario que su estado=1... algo así:

Nos puedes adjuntar la tabla "movimientos" para probarlo y mostrarte la consulta SQL?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Seleccion del mas reciente

Publicado por Jesus (12 intervenciones) el 14/11/2018 18:39:10
Gracias Xavi por tu respuesta, yo tambien parto de que debo coger el ultimo Max(Fecha) de cada usuario que su estado=1 podria ser asi:

SELECT idUsuario,MAX(Fecha) AS Entra FROM movimientos WHERE Estado=1 group by idUsuario

Esto me da una tabla con la ultima vez que entro cada uno de forma correcta
1 | 15/10/2018 11:15
2 | 15/10/2018 11:15
3 | 15/10/2018 11:13

Ahora pienso que deberia hacer un LEFT JOIN de la misma tabla con Estado=2 pero que la Fecha>MAX(FECHA) de la anterior consulta..

Pero como vinculo las dos consultas???
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Seleccion del mas reciente

Publicado por Jesus (12 intervenciones) el 14/11/2018 21:26:21
Xavi disculpa en el mensaje anterior no adjunté la tabla movimientos, lo hago ahora. Si la ordenas por fecha DESC los ultimos registros son de fecha 18/09/2018 a los usuarios 1 y 2 les falta la salida de ese dia.
La cuestion es como unificar las dos selecciones una de entradas y otra de salidas. La de entradas pienso que esta clara como puse en el ejemplo anterior:
SELECT idUsuario,MAX(Fecha) AS Entra FROM movimientos WHERE Estado=1 group by idUsuario
tendriamos que unificar con LEFT JOIN Estado=2 pero que la Fecha>MAX(Fecha) de la anterior consulta y que que sea Null(MAX(Fecha))

Se que lo que pongo es una burrada pero lo hago con el fin de aportar alguna idea.

Cualquier ocurrencia te lo agradezco.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar