Autor
|
Tema: Como usar GROUP y ORDER BY correctamente? (Leído 8,550 veces)
|
BEATMASTER
|
Hola hace tiempo que uso mysql pero a nivel muy basico creo yo y desde hace tiempo me sale una duda al querer hacer una seleccion de datos que en teoria deberia ser muy simple pero que nunca me ha regresado el valor deseado, primero pongo mi query SELECT uni,la,lo FROM sys_gps GROUP BY uni ORDER BY fr DESC, hr DESC
mi tabla solo contiene esos campos ademas de uno llamado id que es la llave y fr y hr que son respectivamente un DATE y un TIME para la fecha y hora de registro el campo uni es un entero el campo la y lo son varchar el campo uni es un numero del 1 al N ahorita solo manejo hasta el 3 de lo que se trata es que para cada numero "uni" obtenga los datos mas recientes de "la" y "lo" por eso es que trato primero de agrupar por "uni" lo cual funciona porque me trae solo 3 registros del 1 al 3 pero no me trae el valor mas reciente ya que me trae el primer valor de cada uno y quisiera que me trajera el valor mas reciente de cada "uni" creo que debe ser algo facil pero no eh encontrado algo con que sustituir mis condiciones para obtener el valor mas reciente, normalmente lo que hago es obtengo un grupo de valores cercnos por ejemplo lo limito a hace 5 mins y por php filtro la "uni" por codigo... pero bueno creo que seria mejor por mysql directamente alguien me sabe decir que debo cambiar? muchas gracias
|
|
|
En línea
|
|
|
|
Shell Root
|
1. Para que usar un campo para la fecha y la hora, si puedes usar DATETIME() que los tiene juntos. 2. Para ordenar supongo que será, .... ORDER BY fr, hr DESC
Prueba la query siguiente y mira a ver que resultado te da, y mira de que se trata el tipo de datos que te dijeSELECT uni,la,lo FROM sys_gps GROUP BY uni ORDER BY fr, hr DESC
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
BEATMASTER
|
mm sigue mostrandome el primer registro en ves de el ultimo, lo de tener la fecha y hora separadas es por cuestiones de la captura en ocasiones podran capturar solo la fecha o solo la hora no siempre sera automatico :p
EDIT: Un amigo me dice que el problema es que al hacer el GROUP ya limita mis registros a estrictamente los primeros registros que encontro con el filtro del GROUP entonces pierde sentido hacer el ORDER porque ya lo hara solo con mis 3 registros y no con toda la tabla, segune sto el dice que es forsozo hacer 2 querys uno para obtener todos los registros mas recientes y luego filtrarlo por mi campo "uni" :S pero creo que deberia haber una forma de ahcerlo en una sola consulta no?
|
|
« Última modificación: 28 Noviembre 2012, 04:45 am por BEATMASTER »
|
En línea
|
|
|
|
Shell Root
|
Bueno, muestrame 5 registros y el resultado que esperas
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
BEATMASTER
|
teniendo estos datos id,uni,la,lo,fr,hr 1,1,37.785835,-122.406418,2012-10-17,23:58:05 2,2,40.785835,-99.406418,2012-10-18,10:58:05 3,3,25.785835,-120.406418,2012-10-18,14:58:05 4,1,23.785835,-88.406418,2012-11-27,23:58:05 5,2,23.785835,-111.406418,2012-10-27,22:58:05 6,3,54.785835,-34.406418,2012-10-27,18:58:05
yo esperaria obtener este resultado uni,la,lo 1,23.785835,-88.406418 2,23.785835,-111.406418 3,54.785835,-34.406418
ya que por cada valor de "uni" son los valores mas actuales de "la" y "lo"
|
|
|
En línea
|
|
|
|
|
|