2012-03-21 3 views
0

위도와 경도를 모두 보유하는 단일 map 필드에는 세미콜론으로 구분됩니다. 내가해야 할 일은 둘을 분리 한 다음 다른 주어진 위도와 경도에서 계산하여 차이를 계산하는 것입니다.WHERE 절에서 여러 변수 다시 사용

참고로, 무시하십시오 ... 어떻게지도 문자열 필드, b.id = a.id, 그리고 내가 위도와 경도로하고있는 계산을 나눠 봤습니다. 여기 중요하지 않습니다.

WHERE 

/* Here's where I get the values for lat and long from the map field */ 
(
    SELECT 
    /* lat from map field */ as lat, 
    /* long from map field */ as long 
FROM some_table AS b 
    WHERE b.id = a.id AND b.key = 'map' 
) 

/* Here's where I use them to do some calculations... */ 
lat <= (" . ($lat + $radius/40075) . ") 
AND lat >= (" . ($lat - $radius/40075) . ") 
AND long <= (" . ($long + $radius/40075) . ") 
AND long >= (" . ($long - $radius/40075) . ") 

나는이 작동하지 않습니다 알지만, 그래서지도 값을 내가 latlong 사용할 때마다 다시 선택 아니에요을 수행하는 방법을 알고 싶습니다.

+0

두 번째 모습. 나는 당신의 질문을 오해했다고 생각합니다. http://dev.mysql.com/doc/refman/5.0/en/user-variables.html –

+0

질문을 이해할 수 없습니다. SQL의'lat'는 PHP 변수'$ lat'와 다른 변수입니까? – staticsan

답변

0

저는 이것을 테스트 할 수있는 위치에 있지 않습니다. 누군가가 구문 오류가 발생하면 해결할 수 있기를 바랍니다.

SELECT SUBST(map, 1, STRPOS(map, ",") - 1) AS lat, SUBSTR(map, STRPOS(map, ",")) AS long 
FROM some_table 
WHERE 
    lat BETWEEN ($lat - $radius/40075) AND ($lat + $radius/40075) 
AND 
    long BETWEEN ($long - $radius/40075) AND ($long + $radius/40075) 
관련 문제