Consulta que seleccione registro con fecha más reciente
Publicado por Alex6 (3 intervenciones) el 13/11/2018 08:47:59
Hola foreros:
Tengo un problema con una consulta que no puedo solucionar. No soy un experto en SQL, y llevo ya unos días rompiéndome la cabeza con esto sin solución. Si alguien pude ayudarme, lo agradeceré mucho.
La cosa es que tengo una tabla de aplicaciones y otra de logs generados por cambios de estado de estas aplicaciones. Quiero obtener un registro por cada aplicación con su último log. Para ello comparo el estado actual de la aplicación con el "nuevo" estado de los logs y en teoría esto debería resultar. Sin embargo, sucede que las aplicaciones pasan muchas veces por los mismos estados así que este criterio me devuelve múltiples registros por cada aplicación. Como en los logs tengo un campo fecha, la solución podría ser quedarse con el registro que tiene la fecha más reciente, pero soy incapaz de lograrlo.
Pongo una simplificación de las tablas, que tienen una relación uno a muchos:
Tabla Aplicacion
-oid
-status
-appName
-version
-tipo
Tabla AppLogs
-oid
-aplicacion_oid
-date
-oldStatus
-newStatus
-comments
La consulta que tengo y que devuelve múltiples registros por aplicación para esta simplificación sería algo así:
SELECT *
FROM Aplicacion LEFT OUTER JOIN AppLogs ON Aplication.oid=AppLogs.aplicacion_oid
WHERE Aplicacion.status=AppLogs.newStatus
¿Cómo obtengo sólo un registro por aplicación con su último log?
Saludos y muchas gracias por su tiempo.
Alex
Tengo un problema con una consulta que no puedo solucionar. No soy un experto en SQL, y llevo ya unos días rompiéndome la cabeza con esto sin solución. Si alguien pude ayudarme, lo agradeceré mucho.
La cosa es que tengo una tabla de aplicaciones y otra de logs generados por cambios de estado de estas aplicaciones. Quiero obtener un registro por cada aplicación con su último log. Para ello comparo el estado actual de la aplicación con el "nuevo" estado de los logs y en teoría esto debería resultar. Sin embargo, sucede que las aplicaciones pasan muchas veces por los mismos estados así que este criterio me devuelve múltiples registros por cada aplicación. Como en los logs tengo un campo fecha, la solución podría ser quedarse con el registro que tiene la fecha más reciente, pero soy incapaz de lograrlo.
Pongo una simplificación de las tablas, que tienen una relación uno a muchos:
Tabla Aplicacion
-oid
-status
-appName
-version
-tipo
Tabla AppLogs
-oid
-aplicacion_oid
-date
-oldStatus
-newStatus
-comments
La consulta que tengo y que devuelve múltiples registros por aplicación para esta simplificación sería algo así:
SELECT *
FROM Aplicacion LEFT OUTER JOIN AppLogs ON Aplication.oid=AppLogs.aplicacion_oid
WHERE Aplicacion.status=AppLogs.newStatus
¿Cómo obtengo sólo un registro por aplicación con su último log?
Saludos y muchas gracias por su tiempo.
Alex
Valora esta pregunta
0