fecha y hora de MySQL y GROUP BY con dos mesas
-
18-09-2019 - |
Pregunta
Tengo una tabla con 3 campos:
-
ID
(no clave no única, primaria) -
timestamp
-
marker
Quiero conseguir la última entrada para cada ID
distinta, pero cuando lo hago
SELECT ID, max(timestamp) from table GROUP BY ID
el campo marcador es incorrecto.
Tengo otra tabla con los siguientes campos:
-
ID
(clave única, primaria) -
lat
-
lng
Me gustaría realizar la misma consulta pero con los campos lat
y lng
así, pero como yo no puedo hacer el primer paso, no sé qué tipo de consulta se debe utilizar. He estado intentando sin éxito.
Podría alguien me punto en la dirección correcta? Muchas gracias.
Solución
Tener una columna ID
que no es sonidos únicos "inesperada", pero éste debe conseguir que las filas esperados:
SELECT t.id, t.timestamp, MAX( t.marker ) marker,
t2.lat, t2.lng
FROM table t
JOIN (
SELECT id, MAX(timestamp) ts
FROM table
GROUP BY id
) tx ON ( tx.id = t.id AND tx.ts = t.timestamp )
JOIN t2 ON ( t2.id = tx.id )
GROUP BY t.id, t.timestamp
El segundo grupo de se asegurará de que usted consigue solamente una fila en caso de que haya más registros para el mismo id
y timestamp
.
Actualizar : consulta Editado para unirse t2
Uso LEFT JOIN
en caso de que haya id
s en t1
que no existen en t2
. lat
y lng
entonces serían NULL
para que las filas.