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

Seleccionar valor maximo

Estas en el tema de Seleccionar valor maximo en el foro de Mysql en Foros del Web. Hola, soy un novato del mysql y no se como hacer lo siguiente: Tengo una tabla con los siguientes campos [id, nombre, puntos], y solo ...
  #1 (permalink)  
Antiguo 26/02/2009, 15:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 0
Seleccionar valor maximo

Hola, soy un novato del mysql y no se como hacer lo siguiente:

Tengo una tabla con los siguientes campos [id, nombre, puntos], y solo quiero hacer una consulta para que me develva el campo "nombre" y "puntos" de la fila que tenga el valor "puntos" mas elevado.


> | id | nombre | punos |
> | 1 | nombr1 | 30 |
> | 2 | nombr2 | 20 |
> | 3 | nombr3 | 80 |
> | 4 | nombr4 | 60 |


En este caso quisiera que me devolviese "nombr3" y "80". Alguien podría decirme que sentencia debería usar?

Muchas gracias por adelantado! ;)
  #2 (permalink)  
Antiguo 26/02/2009, 15:39
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Seleccionar valor maximo

hola bernattorras...

intentalo asi:
select nombre, punos from tabla1 where punos = (select max(punos) from tabla1);

Un saludo.
  #3 (permalink)  
Antiguo 26/02/2009, 15:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Seleccionar valor maximo

Sería algo así de simple:
Código sql:
Ver original
  1. SELECT id, nombre, punos
  2. FROM tabla1
  3. ORDER BY punos DESC
  4. LIMIT 1;

Obviamente no considera el caso en que haya más de uno con 80...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 26/02/2009, 16:27
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Seleccionar valor maximo

Muchas gracias a todos,

Utilizo por ejemplo la sentencia "SELECT * FROM ranking ORDER BY `puntos` DESC LIMIT 1" y me devuelve la fila correspondiente al maximo valor "puntos". :)

Existe alguna manera para averiguar de igual manera el segundo mayor resultado, y asi tmb el tercero, cuarto y quinto? Me interesaria hacerlo con 5 sentencias diferentes (una por cada resultado) o sea que no me serviria "SELECT * FROM ranking ORDER BY `puntos` DESC LIMIT 5".

Muchas gracias!! :)
  #5 (permalink)  
Antiguo 26/02/2009, 19:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Seleccionar valor maximo

Sería algo así:
Código sql:
Ver original
  1. SELECT id, nombre, puntos
  2. FROM tabla1
  3. GROUP BY puntos
  4. ORDER BY punots DESC
  5. LIMIT 1,1;
El LIMIT debería variar de la siguiente forma:

LIMIT 1;
LIMIT 1,1;
LIMIT 2,1;
LIMIT 3,1;
LIMIT 4,1;

Sería una de esas formas en cada sentencia
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 27/02/2009, 04:40
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Seleccionar valor maximo

Muchas gracias de nuevo! :)

Entretanto tengo otra pregunta para quien pueda ayudarme... :P

Haciendo la consulta "SELECT * FROM ranking ORDER BY `puntos` DESC" puedo ver la lista de registros ordenada por la puntutaución. Podría saber de alguna manera en que posición ("1" para el campo con mas puntos, "2" con el segundo con mas puntos...) esta un registro concreto?

> | id | nombre | puntos |
> | 1 | nombr1 | 30 |
> | 2 | nombr2 | 20 |
> | 3 | nombr3 | 80 |
> | 4 | nombr4 | 60 |


En este caso, por ejemplo quisiera saber en que posición está "nombr1" y tendría que darme "3".

Es posible hacer esto en MySQL o tendría que hacerlo con PHP?

Muchas gracias!!
  #7 (permalink)  
Antiguo 27/02/2009, 04:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Seleccionar valor maximo

Esto te conviene hacerlo con la aplicación (programarlo en PHP, en este caso), ya que si bien es posible hacerlo en la aplicación, terminarás haciendo un Store Procedure que haga lo mismo que un For/Next en PHP... pero más lento y sin ahorrar nada de codificación...
A veces los programadores tienden a querer que las bases de datos devuelvan todo ya "cocinado", para evitarse tareas, perdiendo la perspectiva de que ciertas cosas se realizan mejor en otros niveles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 17:06.