Foros del Web » Programando para Internet » PHP »

numero aproximado

Estas en el tema de numero aproximado en el foro de PHP en Foros del Web. buenos dias tengo en mi tabla una columna de montos 110,000 85,000 295,760 305,450 cuando yo ingrese 305,000debe comprar y mostrarme el valor mas proximo ...
  #1 (permalink)  
Antiguo 17/04/2012, 08:04
 
Fecha de Ingreso: agosto-2010
Mensajes: 127
Antigüedad: 13 años, 8 meses
Puntos: 1
numero aproximado

buenos dias tengo en mi tabla una columna de montos
110,000
85,000
295,760
305,450

cuando yo ingrese 305,000debe comprar y mostrarme el valor mas proximo a lo ingresado osea 305,450 , agradeceria de natemano su ayuda
  #2 (permalink)  
Antiguo 17/04/2012, 08:25
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: numero aproximado

No se si existe algo especial, pero se me ocurrio

Código SQL:
Ver original
  1. SELECT monto, abs(305000 - monto) AS importe FROM tabla ORDER BY importe ASC LIMIT 2

Si al limit le ponemos 1, traeria solo 1 numero pero si existireran otros a la misma distancia no nos enteraríamos, uno hacia arriba y otro hacia abajo.

Saludos y suerte
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #3 (permalink)  
Antiguo 17/04/2012, 09:04
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: numero aproximado

Mmmm, hay opciones parecidas.

Si quieres que te enseñe el más próximo por encima:
SELECT monto FROM tabla WHERE monto >= 305 ORDER BY monto ASC LIMIT 1;

Si quieres el más próximo por debajo:
SELECT monto FROM tabla WHERE monto <= 305 ORDER BY monto DESC LIMIT 1;
  #4 (permalink)  
Antiguo 17/04/2012, 09:32
 
Fecha de Ingreso: agosto-2010
Mensajes: 127
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: numero aproximado

gracias por la respuesta , pero creo que no me han entendido
tengo en mi tabla una columna de montos
110,000
85,000
295,760
305,450
310,000
315,000
320,000
325,000
330,000
335,000
340,000
345,000
350,000
355,000

cuando yo ingrese 305,000debe comprar y mostrarme el valor mas proximo a lo ingresado osea el numero
305,000 esta entre estos rangos en la lista 295,760 - 305,450, pero de esos dos numeros tiene que elegir el mas cercano osea deberia mostrar 305,450 , agradeceria de natemano su ayuda
  #5 (permalink)  
Antiguo 17/04/2012, 09:58
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: numero aproximado

Bueno como estas en PHP te voy a poner un ejemplo sencillo usando PHP
Código PHP:
$cantidad 305;

$encima mysql_query("SELECT monto FROM tabla WHERE monto >= 305 ORDER BY monto ASC LIMIT 1");
$debajo mysql_query("SELECT monto FROM tabla WHERE monto <= 305 ORDER BY monto DESC LIMIT 1");

if(
mysql_num_rows($encima)>0){
 
$encima mysql_fetch_assoc($encima);
 
$mayor $encima['monto'];
}
if(
mysql_num_rows($debajo)>0){
 
$debajo mysql_fetch_assoc($debajo);
 
$menor $debajo['monto'];
}
if(!empty(
$menor) && !empty($mayor)){
 
$cercano abs($cantidad-$mayor);
 if(
$cercano abs($cantidad-$menor)){
  
$cercano abs($cantidad-$menor);
 }
}
else{
 if(!empty(
$mayor){
  
$cercano $mayor;
 }
 else{
  
$cercano $menor;
 }
}

echo 
'El número más cercano es: '.$cercano
Esta es una solución para que se vea facilmente, seguramente haya alguna forma de hacerlo en una sola consulta.

Etiquetas: aproximado, numero, tabla
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 21:53.