Hi


Ich bin mir nicht ganz sicher aber das min in having ist irgendwie nicht zielführend

latdiff = min(latdiff) ist gefühlt auch für den ersten wert war 

Wenn Aachen erster wert in deiner Tabelle  ist latdiff natürlich dem Minimum von latdiff selbst 

Was gehen sollte

min(latdiff) < 0.4

Ich hatte ehr gedacht

select min(abs(latitude - 51.04952025)), min(abs(longitude - 13.68193347))

Andreas 

Sent from Android device

Am 03.10.2022 14:13 schrieb Luca Bertoncello <lucabert@lucabert.de>:

Hallo Leute!

Irgendwie habe ich jetzt eine Denkfehler und komme nicht weiter...

Also, sagen wir, dass ich eine Tabelle "airports" habe, mit u.a. die
Koordinaten (Latitude und Longitude) der Flugplätzen.
Ich will den nächstgelegen Flugplatz einem Punkt suchen, von dem ich
ebenso die Koordinaten habe.

Mir ist klar, dass um richtig genau zu sein, die Datenbank Funktionen
enthalten muss, die die Entfernung zwischen zwei Punkte berechnen, und
das haben die meisten DB-Engines nicht. Sicherlich nicht SQLite auf
Android...

Aber für meine Zwecke würde es reichen, wenn ich den Flugplatz finde,
bei dem die Differenz zwischen den eigenen Koordinaten und den
Punktkoordinaten am kleinsten ist.

Irgendwie komme ich aber nicht klar...

Mit dieser Anfrage hole ich die Flugplatzdaten zusammen mit den
Koordinatendifferenzen:

SELECT *,
       ABS(latitude - 51.04952025) AS latdiff,
       ABS(longitude - 13.68193347) AS lngdiff
FROM airports;

Nun will ich den Datensatz finden, bei dem latdiff = MIN(latdiff) und
lngdiff = MIN(lngdiff).
So wäre meine Anfrage:

SELECT *,
       ABS(latitude - 51.04952025) AS latdiff,
       ABS(longitude - 13.68193347) AS lngdiff
FROM airports
GROUP BY id
HAVING latdiff = min(latdiff) AND lngdiff = min(lngdiff);

Aber das gibt mir völlig flasche Ergebnisse, denn die Koordinaten, die
ich hier nutze, sind in Dresden Cotta und der Flughafen Aachen ist
deutlich weiter als den Flughafen Dresden, von mir gesehen...

Kann jemand mir sagen, wo mein Denkfehler liegt?

Danke
Luca Bertoncello
(lucabert@lucabert.de)