Liebe Mitdenker, liebe Wissende, liebe Neugierige,
ja!
Ich möchte hier ergänzen, dass man sich mal mit HAVING beschäftigen kann:
SELECT city.location_name, city.lat, city.lon, ROUND( (acos(sin(radians(city.lat)) * sin(radians(56.0)) + cos(radians(city.lat)) * cos(radians(56.0)) * cos(radians(18.0) - (radians(city.lon)))) * 6380),
- AS linear_distance FROM city HAVING linear_distance <= 10000 ORDER BY linear_distance
Und ich möchte nochmals erwähnen, dass man hier zunächst erst einmal als Subselect eine "Quadratabfrage" auf die große Menge durchführen sollte, für die nur einfache Vergleiche notwendig sind.
Und im zweiten Schritt sollte man die gelieferte (kleine) Menge dann erst mit Sin() und Cos() & Co filtern.
Das kann dank Subselect selbstverständlich auch in einer SQL-Abfrage stattfinden.
Das rechnet sich spätestens, wenn die Anzahl der Datensätze in der Tabelle die 10.000 (oder 50.000, ...) überschreitet.
Spirituelle Grüße Euer Robert
Möge der Forumsgeist wiederbelebt werden!