MySQL - Error en MAX() en un select

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 8 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Error en MAX() en un select

Publicado por Daniel Minacori (3 intervenciones) el 16/01/2020 00:40:08
Hola a todos, llevo años programando en php y Mysql, nunca tuve un problema sin resolver, pero esta vez necesito ayuda.

Tengo una simple tabla:
+-----------+---------------------+------+-----------+---------
| id_oferta | diahora | lote| valor | usuario
+-----------+---------------------+------+-----------+---------
| 8 | 2020-01-15 20:07:40 | 11 | 207000.00 | 18
| 9 | 2020-01-15 20:08:16 | 11 | 207500.00 | 17
| 10 | 2020-01-15 20:08:41 | 11 | 208000.00 | 18
| 6 | 2020-01-14 21:50:08 | 12 | 201000.00 | 17
| 7 | 2020-01-15 20:02:09 | 12 | 202000.00 | 17

Tengo que obtener el valor mas alto de un lote determinado y que usuario la realizo, entonces ejecuto:

select id_oferta,usuario,max(valor) from ofertas where lote=11;
+-----------+---------+------------+
| id_oferta | usuario | max(valor) |
+-----------+---------+------------+
| 8 | 18 | 208000.00 |

El valor MAX es correcto (208000) pero el ID es incorrecto! es el registro ID=10, no el 8 como devuelve la consulta.

Bueno, de ante mano les doy las gracias y saludos atentamente al grupo.
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 juan jose
Val: 46
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Error en MAX() en un select

Publicado por juan jose (8 intervenciones) el 16/01/2020 02:26:59
1
2
3
4
5
6
SELECT id_oferta,usuario,valor
    FROM  ofertas
    WHERE valor IN
             (SELECT max(valor)
                 FROM ofertas
                 WHERE lote =11);


max() solo devuelve un resultado, tienes mas de una tupla que sea de lote 11, por lo cual si lo haces como lo estabas haciendo, pues te devolvera el maximo y el resto de los datos de la primera tupla que tiene ese lote 11

las cosas se pueden hacer de muchas formas, yo te lo hice con una subconsulta, pero podrias ordenarlo en descendente y el primer valor seria el maximo

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 8 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Error en MAX() en un select

Publicado por Daniel Minacori (3 intervenciones) el 16/01/2020 02:53:03
Muchas gracias! estaba tarado con esta consulta.
Saludos desde Argentina compañero!
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