Saya melihat dua kemungkinan solusi.
Yang pertama:
Untuk setiap kota menyimpan di database garis lintang dan garis bujurnya; ketika pengguna mendapat kueri, Anda menghitung jarak dengan setiap kota lain dan mengembalikan hasil.
Pro adalah Anda dapat menambahkan setiap kota dalam db tanpa perlu menambahkan info lain.
Di sini
Anda juga dapat menemukan rumus, sampel, dan kode untuk penghitungan jarak lintang-bujur...
Kedua:
Buat tabel cities_dist
dengan tiga bidang:city1_id, city2_id, distance
dan masukkan ke dalam setiap kemungkinan kombinasi di antara kota-kota Anda. Dengan itu Anda dapat menulis kueri dengan kota yang dipilih seperti city1_id atau city2_id.
Pro adalah Anda dapat menggunakan kueri sederhana tanpa perhitungan apa pun, sedangkan kekurangannya adalah Anda harus mengisi tabel ini kapan saja Anda memasukkan kota baru ke dalam database Anda.
DIEDIT setelah komentar pengguna:
Bayangkan Anda memiliki tiga kota
ID NAME
1 New York
2 Rome
3 Berlin
Tabel itu akan terlihat seperti
CITY1 CITY2 DIST
1 2 1500
1 3 1200
2 3 400
Saat pengguna ingin terbang dari Berlin, Anda dapat menggunakan
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