Moin
SELECT SQL_CALC_FOUND_ROWS users.*, dest.latitude, dest.longitude, ACOS(
SIN(RADIANS(src.latitude)) * SIN(RADIANS(dest.latitude))
+ COS(RADIANS(src.latitude)) * COS(RADIANS(dest.latitude))
* COS(RADIANS(src.longitude) - RADIANS(dest.longitude))
) * 6380 AS distance, FROM users LEFT JOIN postalcodes_de src ON (src.postalcode='01855' AND src.placename='Sebnitz') LEFT JOIN postalcodes_de dest ON (dest.postalcode=users.zip AND dest.placename=users.city) WHERE CONCAT(users.zip,users.city) IN (
SELECT CONCAT(dest.postalcode,dest.placename) FROM postalcodes_de dest
LEFT JOIN postalcodes_de src ON (src.postalcode='01855' AND src.placename='Sebnitz')
WHERE (ACOS(
SIN(RADIANS(src.latitude)) * SIN(RADIANS(dest.latitude))
+ COS(RADIANS(src.latitude)) * COS(RADIANS(dest.latitude))
* COS(RADIANS(src.longitude) - RADIANS(dest.longitude))
) * 6380 ) <=20) ORDER BY distance ASC LIMIT 0,4
>
Manchmal sieht man den Walt vor lauter Bäumen nicht. Die Lösung brauch sich ja nur auf die Distance zu beziehen. Oder sehe ich das falsch?
~~~sql
SELECT SQL_CALC_FOUND_ROWS users.*, ACOS(
SIN(RADIANS(src.latitude)) * SIN(RADIANS(dest.latitude))
+ COS(RADIANS(src.latitude)) * COS(RADIANS(dest.latitude))
* COS(RADIANS(src.longitude) - RADIANS(dest.longitude))
) * 6380 AS distance FROM users LEFT JOIN postalcodes_de src ON (src.postalcode='01855' AND src.placename='Sebnitz') LEFT JOIN postalcodes_de dest ON (dest.postalcode=users.zip AND dest.placename=users.city) WHERE
(ACOS(
SIN(RADIANS(src.latitude)) * SIN(RADIANS(dest.latitude))
+ COS(RADIANS(src.latitude)) * COS(RADIANS(dest.latitude))
* COS(RADIANS(src.longitude) - RADIANS(dest.longitude))
) * 6380 ) <=20
ORDER BY distance ASC LIMIT 0,4
Habe ich etwas übersehen oder ist es wirklich so einfach? :o ^^
Gruß Bobby
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
### Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)