Will nicht klappen:
Der Umkreiscode (fertig ausgeschrieben)
Code: Alles auswählen
SELECT name, plz, country, ( 6371 * SQRT(2*(1-cos(RADIANS(lat)) * cos(0.88895378390603) * (sin(RADIANS(lon)) * sin(0.12130038301361) + cos(RADIANS(lon)) * cos(0.12130038301361)) - sin(RADIANS(lat)) * sin(0.88895378390603)))) AS Distance FROM geodb_locations WHERE 6371 * SQRT(2*(1-cos(RADIANS(lat)) * cos(0.88895378390603) * (sin(RADIANS(lon)) * sin(0.12130038301361) + cos(RADIANS(lon)) * cos(0.12130038301361)) - sin(RADIANS(lat)) * sin(0.88895378390603))) <= 25 ORDER BY Distance
Ergebniss:
4 Spalten:
name
plz
country
Distance
Den muss ich jetzt in den Code frimmeln - wobei ich mir die hälfte davon sparen kann (ab dem where!)
=>
Code: Alles auswählen
SELECT uov.userid, gl.country, gl.plz,
( 6371 * SQRT(2*(1-cos(RADIANS(gl.lat)) * cos(0.88895378390603) * (sin(RADIANS(gl.lon)) * sin(0.12130038301361) + cos(RADIANS(gl.lon)) * cos(0.12130038301361)) - sin(RADIANS(gl.lat)) * sin(0.88895378390603))))
AS entfernung
FROM geodb_locations gl
JOIN user_option_value uov ON (uov.userOption65 = gl.plz )
bekomme bei 2000 Usern, 8700 Datensätze angezeigt. User-Ids doppelt - aber mit Unterschiedlichen Entfernungen.
wenn ich jetzt am Ende ein where entfernung <100 mache = "#1054 - Unknown column 'entfernung' in 'where clause'"
Zudem kann ich kein "AND uov.userOption85 = gl.country" setzen, da country nur 2stellig ist, userOption85 aber ausgeschrieben. Wobei ich das in der geo-DB ja komplett ändern kann!
Also irgendwas hab ich hier falsch umgesetzt.
Edit:
UserID - PLZ (userOption65) LAND - PLZ (GeoDB) - entfernung
1580 2000 AT 2000 717.703720377867
1580 2000 AT 2000 723.245430019754
0 2034 AT 2034 712.321244907324
hab mir mal die userOption65 - PLZ mit anzeigen lassen... Ergebnis sieht ja aus wie gewürfelt

Ne keine Ahnung wie ich den String umsetze ... jetzt div. Möglichkeiten probiert - das wird nicht besser.
@gn#36:
einfacher Zahlenvergleich reicht ja nicht? Österreich und Schweiz haben z.b. die PLZ 4000 ... für rein Deutschland kann ich rein Zahlen abgleichen - das stimmt. Aber Sobald AT/CH dazukommen, muss ich auf jedenfall das LAND dazu nehmen.
Zur Abstandsberechnung: uff ... das mit Rechteck in dem Zusammenhang hab ich schon gelesen ... allerdings nicht verstanden

Wenn die grundsätzliche Ermittlung steht und mir das System klar ist, kann ich die Formel ja noch anpassen. Würde den Punkt daher vorerst pausieren. Diese Berechnung klappt ja auch erstmal.