私は2つの可能な解決策を見ました。
最初のもの:
データベース内の各都市ストアについて、その緯度と経度。ユーザーがクエリを受け取ると、他のすべての都市との距離を計算して結果を返します。
Proは、他の情報を追加しなくても、dbにすべての都市を追加できます。
こちら
緯度と経度の距離を計算するための数式、サンプル、コードもあります...
2番目:
テーブルを作成するcities_dist
3つのフィールド:city1_id, city2_id, distance
都市間のすべての可能な組み合わせの中に入れます。これにより、選択した都市でクエリを作成できます。city1_idまたはcity2_id。
長所は、計算なしで単純なクエリを使用できることですが、短所は入力する必要があることです。データベースに新しい都市を挿入するたびに、このテーブルが表示されます。
ユーザーコメント後に編集:
3つの都市があると想像してください
ID NAME
1 New York
2 Rome
3 Berlin
そのテーブルは次のようになります
CITY1 CITY2 DIST
1 2 1500
1 3 1200
2 3 400
ユーザーがベルリンから飛行機で行きたい場合は、
を使用できます。SELECT c1.name, c2.name, cd.dist
FROM cities_dist cd
INNER JOIN cities c1 ON cd.city1 = c1.id
INNER JOIN cities c2 ON cd.city2 = c2.id
WHERE cd.city1 = your_id
OR cd.city2 = your_id
ORDER BY cd.dist ASC