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

Obtener el precio mayor de tres columnas

Estas en el tema de Obtener el precio mayor de tres columnas en el foro de Mysql en Foros del Web. Hola que tal! Veréis necesito encontrar el precio mayor de entre tres columnas de la base de datos, la tabla seria id_articulo, precio1, precio2, precio3 ...
  #1 (permalink)  
Antiguo 11/12/2015, 12:01
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Obtener el precio mayor de tres columnas

Hola que tal!

Veréis necesito encontrar el precio mayor de entre tres columnas de la base de datos, la tabla seria id_articulo, precio1, precio2, precio3

No se muy bien como hacer la comparación de las tres columnas si he utilizado la comparación solo una de ellas de este modo:

Código SQL:
Ver original
  1. SELECT t.id_articulo, precio1, t.precio2, t.precio3
  2.     FROM articulos t
  3.     WHERE t. precio3 = (
  4.     SELECT MAX( precio3 )  FROM articulos)


Pero con esto solo obtengo el precio mayor de la columna precio3 y necestaría el precio mayor que se encuentre en las 3 columnas.

¿Como podría hacer esta comparación?

Un saludo
  #2 (permalink)  
Antiguo 11/12/2015, 12:04
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, 5 meses
Puntos: 2658
Respuesta: Obtener el precio mayor de tres columnas

Función GREATEST()
Código MySQL:
Ver original
  1. SELECT t.id_articulo,GREATEST( precio1, t.precio2, t.precio3) PrecioMayor
  2. FROM articulos t
  3. WHERE t. precio3 = (
  4.     SELECT MAX( precio3 )  FROM articulos)
El manual de referencia es el libro de cabecera de todo ABD (administrador de bases de datos) que se precie.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/12/2015, 12:11
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Obtener el precio mayor de tres columnas

Hola gnzsoloyo,

No conocía esta función, muchas gracias por la información amigo.

Me pongo con ello a ver si sale,

Un saludo!!
  #4 (permalink)  
Antiguo 11/12/2015, 12:45
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Obtener el precio mayor de tres columnas

Amigo, funciono muy bien de este modo:

Código MySQL:
Ver original
  1. Select GREATEST(precio1, precio2, precio3) PrecioMayor FROM articulos_precios t

Una pregunta como sería si quisiera obtener los articulos cuyo precio sea menor de 100€ por ejemplo?

Puede darme una pista?

Un saludo y gracias
  #5 (permalink)  
Antiguo 11/12/2015, 13:58
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Obtener el precio mayor de tres columnas

Hola franjgg:

No utilices un mismo post para hacer más de una pregunta. Si tu pregunta original ya fue resuelta, entonces da por solucionado el post y si tienes alguna otra duda entonces abre un nuevo post. Ojo con eso.

Ahora bien, pasando a tu problema, en realidad no queda del todo claro a qué te refieres con que el precio sea menor a 100€... puedes filtar de varias formas:

Supongamos que tienes tu tabla así:

Código:
select * from tabla;

id  precio1 precio2 precio3 
--------------------------------
1   97      98      99
2   98      99      100
3   99      100     101
4   100     101     102
entonces, puedes mostrar los resultados de los registros desde los siguientes puntos de vista:

1. Que los tres precios sean menores a 100:

Código:
SELECT 
  precio1, 
  precio2, 
  precio3, 
  GREATEST(precio1, precio2, precio3) PrecioMayor 
FROM tabla 
WHERE precio1 < 100 and precio2 < 100 and precio3 < 100;

id  precio1 precio2 precio3 precioMayor
--------------------------------------------------------
1   97      98      99      99
2. Que al menos uno de los tres precios sea menor a 100:
Código:
SELECT 
  precio1, 
  precio2, 
  precio3, 
  GREATEST(precio1, precio2, precio3) PrecioMayor 
FROM tabla 
where precio1 < 100 or precio2 < 100 or precio3 < 100;

id  precio1 precio2 precio3 precioMayor
------------------------------------------
1   97      98      99      99
2   98      99      100     100
3   99      100     101     101
3. En un mismo renglón comparar sólo entre los que sean menores a 100 y de esos tomar el mayor:

Código:
SELECT 
  precio1, 
  precio2, 
  precio3, 
  GREATEST( IF(precio1 < 100, precio1, 0), 
            IF(precio2 < 100, precio2, 0), 
            IF(precio3 < 100, precio3, 0) 
          ) PrecioMayor 
FROM tabla;

id  precio1 precio2 precio3 precioMayor
------------------------------------------
1   97      98      99      99
2   98      99      100     99
3   99      100     101     99
4   100     101     102     0
Observa que en este último caso para el ID=4 el resultado es un cero, porque ninguno de los tres precios es menor a 100...

y así podrías continuar con más tipos de filtración... haz la prueba para ver si alguno de estos filtros te sirve, y si no es lo que esperas, dinos exactamente qué es lo que pretendes, pon datos de ejemplo y a partir de esos datos dinos qué es lo que esperas obtener como resultado.

Saludos
Leo
  #6 (permalink)  
Antiguo 13/12/2015, 10:28
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Obtener el precio mayor de tres columnas

Hola eonardo_josue,

Que tal, gracias por tu respuesta es muy detallada, no me dí cuenta de que la pregunta tenía varias interpretaciones, lo que estoy intentando es que me muestre los articulos que el menor de sus precios sea menor de 100.

he intentado modificar la consulta pero no me sale nada.

Un saludo amigo y gracias por tu respuesta!

Etiquetas: columnas, mayor, precio, select, tabla, tres
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 23:07.