2012-03-21 27 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 – 2012-03-21 01:27:38

+0

我不明白你的問題。 SQL中的'lat'是一個不同於你的PHP變量'$ lat'的變量嗎? – staticsan 2012-03-21 02:20:33

回答

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)