我在弄清楚如何做到这一点时遇到了一些麻烦。我所拥有的是Access表上160K位置的列表,每个位置都有lat和long坐标。我试图找出如何创建一个列,将列表中的1项与其余项目进行比较,以恢复最近的英里距离。
我已经弄明白如何使用半正式公式进行1比1的比较,但我在尝试自动完成剩下的工作时迷失了。
这基本上就是我想要制作的......
Loc_ID Loc_Lat Loc_Long Min_Miles_Away 1 33.537214 -81.687378 674.48 4 42.16584 -87.845117 11.83 5 41.99558 -87.869057 11.83 6 41.85325 -89.486883 83.75
对表的解释......
位置1最靠近位置5(相隔674.48英里)
位置4最靠近位置5(相隔11.83英里)
位置5最靠近位置4(相隔11.83英里)
位置6最靠近位置5(相隔83.75英里)
任何帮助将不胜感激。
答案 0 :(得分:0)
你可以进行笛卡尔连接,即没有位置的连接。它会将每一行与每一行连接起来。您只需将SQL写入查询的SQL视图即可。
SELECT * FROM locations a, locations b
接下来,您可以在该表上计算距离(我猜您已经拥有该代码,因此只需插入该函数)。 最后你可以按MIN分组。
SELECT loc_id, loc_lat, loc_long, MIN(calulated_distance) as min_miles_away FROM myCalculatedQuery