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

Minimo y Maximos de una fila

Estas en el tema de Minimo y Maximos de una fila en el foro de Mysql en Foros del Web. Tengo la siguiente informacion Lanzador, 1intento, 2intento, 3intento, 4intento pedro, '123', '130', '150', '170' juan, '180', '202', '210', '200' luis, '200', '150', '190', '180' Bueno ...
  #1 (permalink)  
Antiguo 30/06/2010, 14:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 41
Antigüedad: 15 años, 1 mes
Puntos: 1
Minimo y Maximos de una fila

Tengo la siguiente informacion

Lanzador, 1intento, 2intento, 3intento, 4intento
pedro, '123', '130', '150', '170'
juan, '180', '202', '210', '200'
luis, '200', '150', '190', '180'

Bueno mi intención es obtener para cada lanzador su lanzamiento mas corto y su lanzamiento mas largo osea MIN o MAX pero por linea. (no por columnas como lo hace MIN o MAX) y ordenados por el MAX

Estoy usando el siguiente query

SELECT lanzador, MIN(1intento, 2intento, 3intento, 4intento) as distcorta, MAX(1intento, 2intento, 3intento, 4intento) as dislarga FROM lanzamientos ORDER BY dislarga ASC

pero no me funciona me tira error en la sentencia y claro pues MIN y MAX no corre para campos sino para columnas agrupadas.

de ante mano muchas gracias
  #2 (permalink)  
Antiguo 30/06/2010, 14: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: Minimo y Maximos de una fila

Puedes hacerlo con las funciones LEAST y GREATEST.

te dejo un ejemplo.

Código MySQL:
Ver original
  1. mysql> SELECT *FROM lanzamientos;
  2. +----------+----------+----------+----------+----------+
  3. | lanzador | 1intento | 2intento | 3intento | 4intento |
  4. +----------+----------+----------+----------+----------+
  5. | PEDRO    |      123 |      130 |      150 |      170 |
  6. | JUAN     |      180 |      202 |      210 |      200 |
  7. | LUIS     |      200 |      150 |      190 |      180 |
  8. +----------+----------+----------+----------+----------+
  9. 3 rows in set (0.03 sec)
  10.  
  11. mysql> SELECT lanzador,
  12.     ->  LEAST(1intento,2intento,3intento,4intento) menor,
  13.     ->  GREATEST(1intento,2intento,3intento,4intento) mayor
  14.     -> FROM lanzamientos;
  15. +----------+-------+-------+
  16. | lanzador | menor | mayor |
  17. +----------+-------+-------+
  18. | PEDRO    |   123 |   170 |
  19. | JUAN     |   180 |   210 |
  20. | LUIS     |   150 |   200 |
  21. +----------+-------+-------+
  22. 3 rows in set (0.00 sec)

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 30/06/2010, 15:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 41
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Minimo y Maximos de una fila

Gracias esa función LEAST y GREATEST no la conocia.

Pero tengo un único problema



algunas de esas seldas son NULL o vacias '' como las puedo omitir??

ej

+----------+----------+----------+----------+----------+
| lanzador | 1intento | 2intento | 3intento | 4intento |
+----------+----------+----------+----------+----------+
| PEDRO    |      NULL |      130 |      150 |      170 |
| JUAN     |      180 |      202 |       |      200 |
| LUIS     |      200 |      150 |      190 |      180 |
+----------+----------+----------+----------+----------+
  #4 (permalink)  
Antiguo 30/06/2010, 15:13
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: Minimo y Maximos de una fila

Mira la función IFNULL
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 30/06/2010, 15:22
 
Fecha de Ingreso: marzo-2009
Mensajes: 41
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Minimo y Maximos de una fila

ya pero con ifnull solo me ignora las que son NULL como lo hago para las vacias??
  #6 (permalink)  
Antiguo 30/06/2010, 15:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 41
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Minimo y Maximos de una fila

Hice lo siguiente con el ifnull

SELECT lanzador,
-> LEAST(ifnull(1intento,999),ifnull(2intento,999),if null(3intento,999),ifnull(4intento,999)) menor,
-> GREATEST(ifnull(1intento,0),ifnull(2intento,0),ifn ull(3intento,0),ifnull(4intento,0)) mayor
-> FROM lanzamientos;

pero el problema lo tengo con las vacias intenteto lo mismo con un if (1intento='') me funciono pero me tomas las null y al hacerlo un if con un ifnull me dio error no existe un ifemty que tome los null y los empty?
  #7 (permalink)  
Antiguo 30/06/2010, 15:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 41
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Minimo y Maximos de una fila

Ya lo solucione era problema con el IF, lo hise ce la siguiente manera si a alguien le interesa

IF( `columna` != '', IFNULL( `columna` , 99999999 ), 99999999 ) para los LEAST y para GREATEST solo hay que sutituir los 9 por un 0.

Muchas Gracias por la rápida respuesta huesos52.
  #8 (permalink)  
Antiguo 30/06/2010, 16:12
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: Minimo y Maximos de una fila

__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: fila
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 15:10.