2013-02-07 76 views
0

我有2個表格:citycity_neighbormysql query path/radius

city包含所有城市的列表,同時city_neighbor包含某個城市的鄰居(S):insert into city_neighbor (city_id, neighbor_id) Values(1,2) - 其中neighbor_id從city表另一個城市的ID。沒什麼太花哨。

我必須建立的是一個頁面,用戶可以選擇給定半徑內的所有城市。例如:選擇5個城市範圍內所有鄰近芝加哥的城市。重要提示:這是5個城市的半徑。我不能使用英里/公里半徑,我需要使用這種半徑的路徑樣式(請不要使用經緯度相關的響應)。

第二種情況:用戶想要選擇按跳躍次數排序的所有城市(跳躍是爲了從A(芝加哥)到B而必須通過的一個城市)。

任何想法?

P.S.我的數據庫包含約8000個城市。

+0

你不想這樣做是SQL。在提取數據後執行此操作。可能你只是遞歸地檢索一個選定城市的所有鄰居,深度爲5。 – jsj

回答

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)