/ / Distintos retornos duplicados con múltiples columnas: sql, sqlite, geolocalización

Distintos duplicados de retorno con varias columnas: sql, sqlite, geolocation

Estoy desarrollando una aplicación en Android para mostrar rutas de autobús desde mi ciudad natal, tengo problemas con una consulta, tengo dos tablas en mi aplicación como se muestra a continuación:

tabla de INFORMACIÓN

ID | NAME     | DIRECTION
--------------------------
1 | BUS 1    | departure
2 | BUS 1    | return
3 | BUS 2    | departure
4 | BUS 2    | return
5 | BUS 3    | departure
6 | BUS 3    | return

tabla COORDENADAS

ID | INFORMATION_ID |     LAT   |     LON       |
-------------------------------------------------
1 |    1           | 19.171184 | -96.174029    |
2 |    1           | 19.171021 | -96.173991    |
3 |    1           | 19.171002 | -96.173979    |
5 |    2           | 19.193244 | -96.138732    |
6 |    2           | 19.193368 | -96.138957    |
7 |    2           | 19.193332 | -96.138741    |

Estoy tratando de mostrar rutas de autobuses cercanas dentro del rango de 500 my realmente puedo hacerlo con esta consulta

SELECT DISTINCT NAME,
((example.lat  - COORDINATES.LAT) * (example.lat - COORDINATES.LAT) + (example.lon - COORDINATES.LON) * (example.lon - COORDINATES.LON)) AS DISTANCE
FROM COORDINATES
INNER JOIN INFORMATION
ON COORDINATES.INFORMATION_ID=INFORMATION.ID
WHERE DISTANCE < 0.000023544  //supposedly 500 m, im not sure
ORDER BY DISTANCE

Pero el problema es que tengo valores repetidos enel campo NOMBRE porque tengo varios puntos de latlon de las rutas de autobús que están dentro del rango, Solo necesito devolver la distancia mínima con el nombre correspondiente de esta manera:

ID | NAME     | DISTANCE
---------------------
1 | BUS 1    | 1.349834...
3 | BUS 2    | 1.367033...

Le agradeceré cualquier orientación para resolver este problema, gracias.

Respuestas

0 para la respuesta № 1

Vea si esto ayuda a obtener la distancia más corta.

SELECT NAME, MIN(DISTANCE) FROM
(
SELECT NAME,
((19.171150  - COORDINATES.LAT) * (19.171184 - COORDINATES.LAT) +
(-96.173990 - COORDINATES.LON) * (-96.173990 - COORDINATES.LON)) AS DISTANCE
FROM COORDINATES
INNER JOIN INFORMATION
ON COORDINATES.INFORMATION_ID=INFORMATION.ID
WHERE DISTANCE < 0.000023544
)
GROUP BY NAME

http://sqlfiddle.com/#!7/2e1ea/4