Moin,
ich habe folgende MySQL Tabelle:
Ist es möglich eine SQL Abfrage zubauen, die mir alle Städte ,in einer Entfernung von z.B 5Km, zu einer angegebenen Koordinate ausgibt ausgibt?
Hoffe es ist klar was ich meine, wenn nicht schreibt es Kurz.
Moin,
ich habe folgende MySQL Tabelle:
Ist es möglich eine SQL Abfrage zubauen, die mir alle Städte ,in einer Entfernung von z.B 5Km, zu einer angegebenen Koordinate ausgibt ausgibt?
Hoffe es ist klar was ich meine, wenn nicht schreibt es Kurz.
MySql Abfrage mit Berechnung?? Schau mal ob du hier fündig wirst!
Hallo,
grundsätzlich ja. Die Formel dazu heißt "greater circle distance". Wenn du das selber implementierst musst du aber über alle (!) Datensätze laufen und für jeden die Distanz zu deinem Punkt ausrechnen, was wenig performant ist.
Ab MySQL 5.5 hat MySQL aber ein Erweiterung namens "Extensions for Spatial Data" eingebaut, damit geht das besser und schneller. Aber AFAIK hat MySQL erst ab Version 5.6 die Funktion ST_DISTANCE(punkt1, punkt2) an Bord, mit der die Distanz von zwei Punkten berechnet wird.
Gruß, noisefloor
Kann man bei ST_DISTANCE auch den maximalen Distanz Radius angeben?
Habe es bis jetzt wie folgt gelöst:
[code=php]SELECT city, country FROM coordinates ORDER BY ST_Distance(Point(:longitude, :latitude), geolocation) LIMIT 5[/php]
Also beschränkt durch das Limit. Da ich aber ja nicht weis wie viele Punkte es im Umkreis gibt wurde ich gerne den Suchradius mit angeben.
Hallo,
axo, Denkfehler meinerseits. Nein, ST_Distance berechnet nur die Distanz.
In diesem Thread bei Stack Exchange findest du aber fertige Rezepte für dein Problem.
Gruß, noisefloor
Danke dir!
Wenn ich es richtig sehe ist die Distanz die ausgegeben wird in Meilen?!
Hallo,
richtig. Irgendwo in Thread steht aber, welche Zahl du einsetzen musst, damit du auf Kilometer kommst. Irgendwas mit 6xxx.
Gruß, noisefloor
habe es erstmal nur überflogen und bei mir zum testen das Endergebnis noch mit 0.621371192237334 multipliziert. Dann hab ich ja auch Kilometer.
Also ich würde mal Thread wird als wird als Erledigt markiert :thumbs1:
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!