2015-10-15 59 views
0

IM显影在机器人的应用程序用于显示从家乡公共汽车路线,我有一个查询,我在我的应用程式的两个表的问题 ,如下所示:鲜明返回重复

表信息

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 

表施工坐标系

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 | 

我想500米范围内,显示附近公交路线,而我其实是ABL E要与此查询

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 

做,但问题是,我有重复的值在名称字段,因为我从巴士路线范围内的几个latlon点, 我只需要返回最小的距离与这样的对应名称:

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

我会aprecciate解决此问题的任何指导,谢谢。

回答

0

看看这是否有助于获得最短的距离。

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

+0

thaks,但查询只能从一个总线返回最小距离,我需要从范围内的所有总线的最小距离。 [截图](https://www.dropbox.com/s/nrsxooh7akhuiiy/Screenshot_2015-10-14_20-19-11.png?dl=0) – limpmike

+0

我没有误解。我正在更新答案,给我几分钟..谢谢。 – Dilberted

+0

谢谢你,它完美的作品。 – limpmike