Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2013
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 23
salvica Va por buen camino
Hola ecfisa y luisgutierrezb, gracias por contestar

El +0.6 y -06 es lo que hay que sumar a la LATITUD/LONGITUD para componer un cuadrado de aproximadamente 100 kilómetros de lado, con centro en el punto (LATITUD, LONGITUD)

La pregunta viene, porque parece que BETWEEN no responde a las operaciones de suma/resta, mientras que si lo meto a pelo si responde.

Gracias
salvica
Responder Con Cita
  #2  
Antiguo 09-06-2013
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
En una usas ABS y en la otra no, no es exactamente igual
Responder Con Cita
  #3  
Antiguo 10-06-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

En Firebird cree e hice estas pruebas sobre la tabla LUGARES con tres campos NOMBRE, LATITUD y LONGITUD (El primero VARCHAR(20) y los dos restantes DOUBLE PRECISION).

Valores:
Código:
NOMBRE	LATITUD	         LONGITUD     OPERACION
A	38,353619	-2,45806      (-0.6)
B	38,953619	-1,85806      ( = )
C	38,553619	-1,25806      (+0.6)
Y tanto con la función ABS, o mediante BETWEEN obtengo los registros, pero las comparaciónes no pueden ser echas como mencioné en el mensaje anterior debido a los decimales.

En el caso de Firebird 2.5 y con DOUBLE PRECISION tuve que comparar con un mínimo de:
Código SQL [-]
   ...
  WHERE LATITUD - 38.953619 BETWEEN -0.60000000000001 AND 0.60000000000001
    AND LONGITUD +  1.85806 BETWEEN -0.60000000000001 AND 0.60000000000001
O
Código SQL [-]
  ...
  WHERE ABS(LATITUD - 38.953619)  <= 0.60000000000001
    AND ABS(LONGITUD + 1.85806 )  <= 0.60000000000001
Para que mostrara la totalidad de registros que deberían ser incluidos.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 01-07-2013
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 23
salvica Va por buen camino
Gracias a todos, al final lo he hecho así:
Código SQL [-]
SELECT *
   FROM lugares
WHERE (latitud   BETWEEN (38.953619-0.65) AND (38.953619+0.65) )
      AND (longitud  BETWEEN (-1.858060-0.9)  AND (-1.858060+0.9) );

Salvica
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:26:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi