Jeg så to mulige løsninger.
Den første:
For hver by gemmer i database dens bredde- og længdegrad; når brugeren får en forespørgsel, beregner du afstand med hver anden by og returnerer resultater.
Fordelen er, at du kan tilføje hver by i db uden at skulle tilføje anden info.
Her
du kan også finde formler, eksempler og kode til afstandsberegning af breddegrad-længdegrad...
For det andet:
Opret en tabel cities_dist
med tre felter:city1_id, city2_id, distance
og indsæt alle mulige kombinationer blandt dine byer. Med det kan du skrive en forespørgsel med valgt by, der er city1_id eller city2_id.
Profit er, at du kan bruge en simpel forespørgsel uden nogen beregning, mens ulemperne er, at du skal udfylde denne tabel, når som helst du indsætter en ny by i din database.
REDIGERT efter brugerkommentar:
Forestil dig, at du har tre byer
ID NAME
1 New York
2 Rome
3 Berlin
Den tabel skulle se ud
CITY1 CITY2 DIST
1 2 1500
1 3 1200
2 3 400
Når brugeren ønsker at flyve fra Berlin kan du bruge
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