/ / Renvoi de doublons distincts avec plusieurs colonnes - sql, sqlite, geolocation

Doublés renvoyés distincts avec plusieurs colonnes - sql, sqlite, geolocation

Je développe une application dans Android pour montrer les itinéraires de bus de ma ville natale, j'ai des problèmes avec une requête, j'ai deux tables dans mon application comme indiqué ci-dessous:

tableau INFORMATION

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

table COORDONNEES

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    |

J'essaie de montrer les lignes de bus à proximité dans un rayon de 500 m et je suis en mesure de le faire avec cette requête.

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

Mais le problème est que j’ai répété des valeurs dansle champ NOM parce que j'ai plusieurs points de latlon dans les itinéraires de bus qui se trouvent dans la plage, Je dois juste retourner la distance minimale avec le nom correspondant comme ceci:

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

Je vais ajouter toutes les instructions pour résoudre ce problème, merci.

Réponses:

0 pour la réponse № 1

Voir si cela aide à obtenir la distance la plus courte.

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