2012-05-27 2 views
5

나는 열 latitudelongitudeusers라는 데이터베이스를 가지고 있고, 나는 특정 위도와 경도에 50km 반경 내에있는 가장 가까운 사용자합니다 (users 테이블에 사용자를) 해결하려면 $_POST에서 제공됩니다.일 MySQL의

내가 어떻게 할 수 있는지 말해 줄 수 있습니까? latitude_compare() 또는 뭔가 같은 MySQL의 함수 또는 사용해야하는 특정 수학 함수가 있습니까?

+2

[근접 검색] (http://stackoverflow.com/questions/260335/proximity-search) 중복 가능 –

답변

2

당신이 뭔가를 할 수 있습니다

SELECT *, 

(ACOS((SIN(RADIANS(ref_latitude))*SIN(RADIANS(latitude))) + 
(COS(RADIANS(ref_latitude))*COS(RADIANS(latitude))*COS(RADIANS(longitude) 
-RADIANS(ref_longitude)))) * 6371) AS distance 

FROM table 
ORDER BY distance ASC 

포인트 A : ref_latitude ref_longitude

포인트 B : 위도

내 위도/경도 값이도에 경도, 같은 이 하나 :

드레스덴 : 13.721067614 881400/51.060033646337900

1

여기는 내가 사용 해본 코드입니다. 주어진 반지름 내에서 모든 lat와 lng를 선택합니다.

$q = "SELECT * (3959 * acos(cos(radians($current_lat)) * cos(radians(lat)) * cos(radians(lng) - radians($current_lng)) + sin(radians($current_lat)) * sin(radians(lat)))) AS distance FROM users HAVING distance < $radius";