2013-02-21 17 views
1

我想在15码广场(因此具体值)内分组类似的值。更好的方式来使用PHP中的SELECT WHERE分组类似的值

这是通过纬度/经度值,减去或将其加入其它值/和如果该条件为大于/小于值,组

我已经通过选择尝试这样使用PHP完成使用下面的代码从我的MySQL数据库中的数据:

$summarisedData = mysql_query("SELECT P_ID,COUNT(*) 
FROM road_awareness 
WHERE 
(
    (
    (
    LAT - '$value[LAT]' < (0.006858/69) 
    AND 
    LAT - '$value[LAT]' > (-0.006858/69) 
    ) 
    OR 
    (
    LAT + '$value[LAT]' < (0.006858/69) 
    AND 
    LAT + '$value[LAT]' > (-0.006858/69) 
    ) 
    ) 
AND 
(
    (
    LON - '$value[LON]' < 0.006858/(cos($lat*M_PI/180)*69) 
    AND 
    LON - '$value[LON]' > -0.006858/(cos($lat*M_PI/180)*69) 
    ) 
    OR 
    (
    LON + $value[LON]' < 0.006858/(cos($lat*M_PI/180)*69) 
    AND 
    LON + '$value[LON]' > -0.006858/(cos($lat*M_PI/180)*69) 
    ) 
) 
) 
GROUP BY LAT, LON"); 

这段代码有很多重复的代码非常哈克,我不知道这是否是正确的。将不胜感激任何帮助。

+0

我试图理解括号分组'')'。如果您调整查询布局以使各部分根据括号嵌套进行缩进,您会发现它对于可读性很有帮助,这对读者来说也更容易。 – halfer 2013-02-21 22:27:27

+0

括号分组使得它非常难读,希望这是一个改进。 – JJI90 2013-02-21 23:29:51

+0

谢谢!好多了。 – halfer 2013-02-21 23:31:29

回答

0

对于road_awareness中的每条记录和查询之前确定哪个扇区下降您的$ value [LAT]/$ value [LON]并选择by,可能预先计算每个记录中的某个“扇区”值部门。

+0

我用这个加号跟着更多来自mySQL的命令来改进它,谢谢! – JJI90 2013-02-22 13:31:39

相关问题