Bases de Datos - Consulta con maximo

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 13 puestos en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta con maximo

Publicado por Mike (2 intervenciones) el 11/05/2019 19:07:19
Hola buena tarde

Requiriendo ayuda para realizar una consulta en una db MySQL

Al realizar la consulta en la tabla con las siguientes especificiaciones:

Columnas
id, type, servertime, devid, ubid, geoid

select *
from eventos
where servertime between date_sub(curdate(), interval 5 day) and now()
AND devid = (188)
AND type = 'Enter';

el resultado que me arroja en la línea que me interesa es este:
id, type, servertime, devid, ubid, geoid
47404209 Enter 2019-05-11 11:59:37 188 78091446 516
(claro arroja mas líneas pero esta es la que me interesa)

Ahora quiero solo traer ese resultado que es el último y realizo lo siguiente:

select max(id), type, servertime, devid, ubid, geoid
from eventos
where servertime between date_sub(curdate(), interval 5 day) and now()
AND devid = (188)
AND type = 'Enter'
group by devid;

Como resultado si me muestra un registro pero
id, type, servertime, devid, ubid, geoid
47404209 Enter 2019-05-06 00:03:49 188 77322711 133

al cambiar el max

select id, type, max(servertime), devid, ubid, geoid
from eventos
where servertime between date_sub(curdate(), interval 5 day) and now()
AND devid = (188)
AND type = 'Enter'
group by devid;

id, type, servertime, devid, ubid, geoid
46989243 Enter 2019-05-11 11:59:37 188 77322711 133

Es una consulta simple, pero no me trae lo deseado

Que es el último registro de devid, entre el rango de fechas a partir de ciertos días.

Que es lo que estaría haciendo mal.

Espero puedan apoyarme,

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 Isaias
Val: 52
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta con maximo

Publicado por Isaias (26 intervenciones) el 14/05/2019 16:33:19
¿Y porque no lo cambias?

1
2
3
4
5
6
7
8
9
select id, type, servertime, devid, ubid, geoid
from eventos
where servertime between date_sub(curdate(), interval 5 day) and now()
AND devid = (188)
AND type = 'Enter'
AND id in(select max(id) from
where servertime between date_sub(curdate(), interval 5 day) and now()
AND devid = (188)
AND type = 'Enter')
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: 3
Ha disminuido su posición en 13 puestos en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta con maximo

Publicado por Mike (2 intervenciones) el 14/05/2019 19:42:05
Antes que nada agradezco que te tomes el tiempo para compartir tu conocimiento.

Al realizar la prueba solo me da como resultado un registro y pues son varios devid,
entonces el punto es traerme de cada devid su max(), y pues ya verificando la respuesta
no me da el resultado correcto, sigue realizando el mismo error.

De nuevo muchas 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
Imágen de perfil de Isaias
Val: 52
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Consulta con maximo

Publicado por Isaias (26 intervenciones) el 15/05/2019 17:05:35
Si trae UN SOLO REGISTRO, es porque tu WHERE se esta cumpliendo

1
2
3
where servertime between date_sub(curdate(), interval 5 day) and now()
AND devid = (188)
AND type = 'Enter')

Ejecuta el siguiente codigo y dime cuantos registros te muestra

1
2
3
4
5
select id, type, servertime, devid, ubid, geoid
from eventos
where servertime between date_sub(curdate(), interval 5 day) and now()
AND devid = (188)
AND type = 'Enter'
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