Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

MAX(campo) MySQL

Estas en el tema de MAX(campo) MySQL en el foro de Mysql en Foros del Web. Hola, tengo un problema con una consulta mysql. Yo mando la consulta Código: SELECT MAX(campo) AS 'm' FROM tabla y sin problemas me devuelve el ...
  #1 (permalink)  
Antiguo 16/09/2006, 07:58
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
MAX(campo) MySQL

Hola, tengo un problema con una consulta mysql. Yo mando la consulta

Código:
SELECT MAX(campo) AS 'm' FROM tabla
y sin problemas me devuelve el valor mas grande en el campo campo como m.

Pero si algún registro tiene un valor de texto, me devuelve ese valor de texto y no el mayor valor de los numericos, y eso produce un error en mi programa.

Mi pregunta es Como puedo realizar una consulta similar, pero sin que se tengan en cuenta los registros que tienen valores de texto??

Muchas gracias
Saludos
  #2 (permalink)  
Antiguo 16/09/2006, 09:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Hola en el Manual de MySQL especifica que si se usa en un string, regresa el string con el valor mas alto de la columna.

Yo te recomiendo que "rompas" tu campo en uno para numeros y el otro para texto para que no tengas problemas.
  #3 (permalink)  
Antiguo 16/09/2006, 11:34
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Bien muchas gracias ^^

No existe alguna forma de limitar la consulta solo a los registros que en ese campo NO tengan texto, por ejemplo utilizando WHERE?

Saludos
  #4 (permalink)  
Antiguo 16/09/2006, 11:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Lee el manual hay varias funciones y podrias a lo mejor manejar una consulta asi.
  #5 (permalink)  
Antiguo 16/09/2006, 12:41
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
No lo logro .__.

Necesitaria alguien con algo de experiencia con MySQL que me ayude a hacer esta consulta, si es posible por favor x_x

Muchas gracias
Saludos
  #6 (permalink)  
Antiguo 30/07/2009, 09:26
 
Fecha de Ingreso: julio-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Exclamación Respuesta: MAX(campo) MySQL

Yo tambien tenia un problema parecido el mio era:
SELECT MAX(COD_PRE) FROM PREGUNTA;
Me devolvia muy bien hasta que llego al 10 cuando llego al 10 me comenso a devolver 9 (como si 9 fuera el maximo y estaba mal puesto a que el 10 era el maximo) entonces me fije el tipo de dato y le habia puesto char(10) lo cambie y le puse int cuando le puse int resien hay me retornaba normal.
Justo ahora he venido a fijarme el porque de mi error y es debido a esto creo.


For MAX(), MySQL currently compares ENUM and SET columns by their string value rather than by the string's relative position in the set. This differs from how ORDER BY compares them. This is expected to be rectified in a future MySQL release.
------TRADUCIDO----------------------------------------------------------------------
Para MAX (), MySQL actualmente compara las columnas ENUM y SET por su valor de cadena en lugar de la cadena de la posición relativa en el conjunto. Esto difiere de cómo los compara ORDER BY. Se espera que se rectifique en una futura versión de MySQL.

Te recomiendo que utilises SQLServer es mucho mejor de verdad.

Asi en esta WEB son muy corchos todos los que te respoden.
Porque te responde con lo 1ero que sale del GOOGLE
bAY sALUDOS a lOS cOMPRADRES GEEK'S
  #7 (permalink)  
Antiguo 21/09/2009, 09:26
Avatar de mrkents  
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: MAX(campo) MySQL

Cita:
Iniciado por GCORREAGEEK Ver Mensaje
Yo tambien tenia un problema parecido el mio era:
SELECT MAX(COD_PRE) FROM PREGUNTA;
Me devolvia muy bien hasta que llego al 10 cuando llego al 10 me comenso a devolver 9 (como si 9 fuera el maximo y estaba mal puesto a que el 10 era el maximo) entonces me fije el tipo de dato y le habia puesto char(10) lo cambie y le puse int cuando le puse int resien hay me retornaba normal.
Justo ahora he venido a fijarme el porque de mi error y es debido a esto creo.


For MAX(), MySQL currently compares ENUM and SET columns by their string value rather than by the string's relative position in the set. This differs from how ORDER BY compares them. This is expected to be rectified in a future MySQL release.
------TRADUCIDO----------------------------------------------------------------------
Para MAX (), MySQL actualmente compara las columnas ENUM y SET por su valor de cadena en lugar de la cadena de la posición relativa en el conjunto. Esto difiere de cómo los compara ORDER BY. Se espera que se rectifique en una futura versión de MySQL.

Te recomiendo que utilises SQLServer es mucho mejor de verdad.

Asi en esta WEB son muy corchos todos los que te respoden.
Porque te responde con lo 1ero que sale del GOOGLE
bAY sALUDOS a lOS cOMPRADRES GEEK'S
Saludos,

Ya revisaste si tu campo es numérico, lo más probable que es lo tengas como string y por eso te funcionaba hasta 9, ya el "10" es otra cosa para el MAX.

pdta. no tiene nada que ver el motor de base de datos a usar.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.