Wert suchen der am nähesten an ...

wp-kd

Neuer Benutzer
Beiträge
2
Hallo an das Forum,

ich habe eine Datenbanktabelle mit gps-koordinaten und Ortsangaben aus der ich die plz und den ort suchen will.
Das Problem ist, das da eventuell nicht ganz genau der Standort des Users mit den ermittelten Werten eingetragen ist.

z.B. ermittle ich die Koordinaten 51.059930782270456 als Lat und 13.747426815499294 als Lon.
Nun möchte ich in der Tabelle den Eintrag finden welcher diesen beiden Werten am nächsten kommt.
Sowas wie:
(SELECT * FROM `orte` WHERE `lon`>=13.747426815499294 ORDER BY abs(`lon`) limit 1)
UNION
(SELECT * FROM `orte` WHERE `lon`<13.747426815499294 ORDER BY abs(`lon`) limit 1)
UNION
(SELECT * FROM `orte` WHERE `lat`>=51.059930782270456 ORDER BY abs(`lat`) limit 1)
UNION (SELECT * FROM `orte` WHERE `lat`<51.059930782270456 ORDER BY abs(`lat`) limit 1)

hilft mir da nicht wirklich weiter. Die Ergebnisse liegen leider zu weit von dem gesuchten Ort entfernt.
Kann mir da jemand weiter helfen?
 
Werbung:
Also diese UNION Sache kann ja alles Mögliche ergeben. Grundsätzlich benötigt man zu 99% kein Union, wenn man die gleiche Tabelle abfragt, nein, auch nicht, wenn man aus Unkenntnis handelt. Ich habe früher auch oft gedacht, ich hätte einen Bug in SQL gefunden, aber es waren immer eigene Fehler.
Schau Dir bitte mal an, wie man Abfragekriterien in der Where Clause mit AND oder OR verknüpft. Sonst hast Du einen losen Haufen von Daten, der allerbestenfalls eine Nährung dessen liefert, was Du suchst.
Wenn Du mit Geodaten arbeitest, solltest Du versuchen, die richtigen Werkzeuge zu nutzen. Das kann selbst MySQL etwas mit Version 8, wenn ich das richtig im Kopf habe. Dort fängt es dann mit den richtigen Datentypen an für 2d Koordinaten, Spatial Data Types, dazu dann die geeignete Funktionen.
 
Gibt es hier in dem Forum auch echte Hilfe, oder sind hier nur solche Schlaumeier unterwegs die zeigen wollen das sie besser sind als alle die eine Frage stellen!?
 
Werbung:
Gibt es hier in dem Forum auch echte Hilfe, oder sind hier nur solche Schlaumeier unterwegs die zeigen wollen das sie besser sind als alle die eine Frage stellen!?

Noch einmal: verwende für den Zweck passende Software. Umkreissuche ohne solche passende Software basiert darauf, daß Du um den Punkt ein willkürliches Rechteck legst, indem Du die Koordinaten nimmst und in X und Y je einen bestimmten Wert abziehst / dazuaddierst und das in eine Abfrage mit BETWEEN einbaust. Zu den so gefundenen Koordinaten ermittelst Du den Abstand, und sortierst danach. Nimmst Du zu geringe Werte, findest Du nix, sind die Werte zu hoch, findest Du zu viele. Das ist die dumme Methode, dumm weil einfach Murks im Vergleich zu dem, was heutzutage richtige Software kann.
 
Zurück
Oben