![]() |
Trabada en Consulta MySql
Hola , buenos días, estoy trabajando en una consulta de Mysql y me he quedado atascada porque no me salen los resultados exactos que deseo obtener.
Vereis lo que necesito conseguir es: Sacar la última lectura del día anterior al que estamos para todos los contadoresque tengo en mi base de datos. La consulta que yo he realizado es la siguiente:
El campo fecha contiene la fecha y la hora. Lo que me muestra esta consulta son la primera lectura del día anterior al actual para todos los contadores y yo necesitaría sacar la última para cada uno de ellos. ¿Cómo lo podría hacer?. Gracias por todo. P.D: Espero haberme expresado con claridad. Hasta pronto |
Si ordenas descendentemente, deberás usar FIRST(), si ordenas ascendentemente, LAST()
o
Creo que te falta la función de agregado. También podrías parametrizar la consulta para enviarle una fecha como parámetro y calcular la fecha del día anterior, pero eso depende del motro de BBDD, y yo de MySQL no domino bastante ( ni tengo muchas ganas de mirar, ciertamente ). Suerte y saludos |
Trabada con consulta .-. Solución
Gracias por responderme , la verdad, es que en Mysql no se puede usar el frist o last ó por lo menos a mi me da error igual es quehe ehcho alguna cagadilla por ahí, pero tu consulta e dio una idea queme llevo a encontrar la solución.
Solución: Código:
Probaré a sacar la anterior poniendo las fechas con parámetros . Muchas gracias y buen día.;) |
Realmente el problema no creo que sea del first ni del last, sino que no incluyes los campos que no tengan función de agrupado en el group by
Esta era tu consulta inicial. Seguramente te dará error porque haces un group by y no hay funciones de agrupado ( first, last, sum, count, ...). Además, todos los campos que pongas que no tengan función, deberán estar en el group by. Saludos |
trabada con consulta en mysql.-. solución
Cita:
|
Sigo trabada en funcion
La verdad es que poniendo max(contadores.valor) ó sin poner el max no me sale el resultado del todo bien , lo que yo pretendo es que me salga el valor correspondiente a la fecha resultante de la consulta , si pongo el max me sale siempre la máxima y no tiene porque corresponder a esa fecha.
Si lo hago como tu dices, poniendo todos los campos que no tiene función en el group by, es decir, en este caso sería el campo valor, me aparecerán todos los valores de ese contador entre las 2 fecha indicadas y no pretendo eso, sino , que me salga sólo un resultado por cada contador, con su valor correspondiente para la última fecha del día anterior. Me haría falta algo como tu dices el first ó el last, pero cuando lo pongo en la consulta tal que así: Código:
Plissssssss si se te ocurre algo más comantamelo igual es que no te he entendido lo que me intentas explicar, yo seguiré estrujandome el coco. Gracias por tu apoyo y ayuda... |
En la respuesta nº 2 tienes la solución escrita de dos maneras diferentes.
Saludos Ah, pero no mezcles el orden . Con DESC, first, sin DESC, last. |
Gracias
Gracias por todo, pero con Mysql no puedo utilizar el first ni el last.
Seguiré investigando |
La franja horaria es GMT +2. Ahora son las 18:51:41. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi