Ich habe zwei mögliche Lösungen gesehen.
Erster:
Speichern Sie für jede Stadt ihren Breiten- und Längengrad in der Datenbank; Wenn der Benutzer eine Abfrage erhält, berechnen Sie die Entfernung mit jeder anderen Stadt und geben Ergebnisse zurück.
Der Vorteil ist, dass Sie jede Stadt in DB hinzufügen können, ohne weitere Informationen hinzufügen zu müssen.
Hier
Sie können auch Formeln, Beispiele und Code für die Breiten-Längen-Entfernungsberechnung finden ...
Zweitens:
Erstellen Sie eine Tabelle cities_dist
mit drei Feldern:city1_id, city2_id, distance
und geben Sie jede mögliche Kombination zwischen Ihren Städten ein. Damit können Sie eine Abfrage mit der ausgewählten Stadt als city1_id oder city2_id schreiben.
Pro ist, dass Sie eine einfache Abfrage ohne Berechnung verwenden können, während die Nachteile sind, dass Sie sie ausfüllen müssen diese Tabelle immer dann, wenn Sie eine neue Stadt in Ihre Datenbank einfügen.
BEARBEITET nach Benutzerkommentar:
Stellen Sie sich vor, Sie haben drei Städte
ID NAME
1 New York
2 Rome
3 Berlin
Diese Tabelle sollte so aussehen
CITY1 CITY2 DIST
1 2 1500
1 3 1200
2 3 400
Wenn Benutzer von Berlin aus fliegen möchten, können Sie
verwendenSELECT 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