0

我有 2 张桌子:citycity_neighbor.

city包含所有城市的列表,同时city_neighbor包含给定城市的邻居:insert into city_neighbor (city_id, neighbor_id) Values(1,2)- 其中 neighbor_id 是city表中另一个城市的 id。没什么太花哨的。

我必须建立一个页面,用户可以在其中选择给定半径内的所有城市。例如:选择半径为 5 个城市的所有邻近芝加哥的城市。重要提示:它是 5 个城市的半径。我不能使用英里/公里的半径,我需要使用这种半径的路径样式(请不要与纬度/经度相关的回复)。

第二个场景:用户想要选择所有按跳跃次数升序排列的城市(其中一个跳跃是一个城市,为了从 A(芝加哥)到 B 必须经过一个城市)。

有任何想法吗?

PS 我的数据库包含约 8,000 个城市。

4

1 回答 1

3
FUNCTION: CountNeighbors
IMPORT: city, depth
EXPORT: neighbors
ALGORITHM:
   neighbors = SET
   ++depth
   direct_neighbors = SELECT NEIGHBORS OF city
   neighbors += direct_neighbors
   IF depth < 5
       FOR EACH neighbor IN direct_neighbors
           neighbors += CountNeighbors(neighbor, depth, result)
于 2013-02-07T06:23:26.107 回答