Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/10/2013, 05:53
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Obtener registro mas cercano

Uffff trigonometria debes calcular la distancia entre el punto dado y los puntos de la bbdd y elegir la minima.

Distacia entre dos puntos = raiz cuadrada de la suma del (incremento de x) al cuadrado mas (incremento de y) al cuadrado

Es decir aplicar Pitagoras.... para ello, primero tener coordenadas cartesianas, luego construyes una función distancia, supongamos

distancia(x1,y1,x2,y2) donde x1,y1 son el punto de referencia y x2,y2 son los puntos de la base de datos.

Código MySQL:
Ver original
  1. SELECT * FROM municipios
  2. distancia(x1,y1,x2,y2)=(SELECT MIN(distancia(x1,y1,x2,y2)) FROM municipios);

esta seria una solución sql, podrias buscar otra en php pero solo cambiaras el lenguaje.

En php deberas cargar toda la tabla municipios en un array, calcular la distacia a cada punto, con una funcion php muy similar a la anterior, agregar el resultado al array y elegir la menor...

Por otro lado ahora recuerdo que mysql, asi como otras bbdd, tiene extensión geográfica

Capítulo 18. Extensiones espaciales de MySQL

pero solo te puedo dar el link... no lo he usado. Quizas encuentras una función distancia en esas extensiones.

Por cierto LIKE hace una comparación entre strings no entre números
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/10/2013 a las 06:09