Ik zag twee mogelijke oplossingen.
Eerste:
Voor elke stadswinkel in de database zijn breedte- en lengtegraad; wanneer de gebruiker een zoekopdracht krijgt, berekent u de afstand met elke andere stad en retourneert u resultaten.
Pro is dat u elke stad in db kunt toevoegen zonder dat u andere informatie hoeft toe te voegen.
Hier
je kunt ook formules, voorbeelden en code vinden voor het berekenen van de lengte- en breedtegraad...
Tweede:
Maak een tabel cities_dist
met drie velden:city1_id, city2_id, distance
en plaats elke mogelijke combinatie tussen uw steden. Hiermee kunt u een zoekopdracht schrijven met de geselecteerde stad, namelijk city1_id of city2_id.
Pro is dat u een eenvoudige zoekopdracht kunt gebruiken zonder enige berekening, terwijl de nadelen zijn dat u deze moet invullen deze tabel telkens wanneer u een nieuwe stad in uw database invoegt.
BEWERKT na gebruikersopmerking:
Stel je voor dat je drie steden hebt
ID NAME
1 New York
2 Rome
3 Berlin
Die tabel zou er zo uit moeten zien
CITY1 CITY2 DIST
1 2 1500
1 3 1200
2 3 400
Wanneer de gebruiker vanuit Berlijn wil vliegen, kunt u
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