On Wed, 30 Jul 2008 15:37:17 -0500 "Jaime Casanova" <[EMAIL PROTECTED]> wrote:
> On Thu, Jun 26, 2008 at 7:27 AM, Alvaro Herrera > <[EMAIL PROTECTED]> wrote: > > Daniel Hernández escribió: > >> Hola, parece que los mails que he enviado no han llegado, no lo he > >> visto en los archivos, así que pregunto de nuevo. > >> > >> Tengo una tabla como esta: > >> > >> CREATE TABLE t (x double precision primary key, ...); > >> > >> y quiero obtener el elemento cuyo valor sea más cercano a un valor dado > >> x0. > > > > Usa un UNION, por ej. > > > > select * from ( > > (select * from t where x < 0.4 order by x desc limit 1) > > union all > > (select * from t where x > 0.4 order by x limit 1) > > ) qqch > > order by abs(x - 0.4); > > > > O sea tomas el mas cercano hacia arriba y hacia abajo, y luego escoges > > uno de entre ellos. > > > > tenia este mail guardardo para chequearlo cuando tuviera tiempo... > que pasa si en el conjunto de valores esta incluido x? > no deberia uno de los select admitir tambien los iguales? Claro, yo puse >=, para resolver eso. Saludos, -- Daniel Hernández http://www.scio.cl -- TIP 7: no olvides aumentar la configuración del "free space map"