dave: MYSQL - PHP -> Select ... ORDER BY nähe zu Koordinaten

Beitrag lesen

Hi,

du kannst die Distanz von den angegebenen Koordinaten zu den Koordinaten der Adresse in der Datenbank relativ leicht ausrechnen:

Die angegebenen Koordinaten: x, y;
Die Koordinaten des Datensatzes: dX, dY;

entfernung der Punkte mit Pythagoras:
Entfernung = Wurzel((dX - x)² + (dY - y)²)

Nach diesem Wert kannst du sortieren.

Da Wurzel Berechnungen soweit ich weiß allerdings sehr rechenintensiv sind empfiehlt es sich aus Performance gründen nur nach (dX - x)² + (dY - y)² zu sortieren.
Wenn man davon ausgeht das du die Entfernung nicht auch noch ausgeben willst.

Das ganze im SQL-Befehl verpackt sieht in etwa so aus:

SELECT spalten, die, geholt, werden, sollen  
FROM adressdaten  
WHERE laengengrad BETWEEN $laengengradminus AND $laengengradplus  
AND breitengrad BETWEEN $breitengradminus AND $breitengradplus  
ORDER BY (  
(laengengrad - $laengengrad)² + (breitengrad - $breitengrad)²  
)