Hello Bobby,
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
Wenn Du unbedingt beim Kreis bleiben willst, musst du aber nicht zweimal dieselbe Berechnung durchführen innerhalb eines Statements. Dafür kannst Du bei ersten Mal eine benutzerdefinierte Variable belegen und auf diese beim zweiten Mal zugreifen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
☻\_
/▌
/ \ Nur selber lernen macht schlau
<http://bikers-lodge.com>