我在这个查询时遇到问题:
SELECT Store_name, GPS_latitude, GPS_longitude, SQRT(
POW(69.1 * (GPS_latitude - $longitude), 2) +
POW(69.1 * ($latitude - GPS_longitude) * COS(GPS_latitude / 57.3), 2)) AS distance
FROM table HAVING distance < 25 ORDER BY distance
网站的用户应该能够输入坐标(纬度和经度)。从那里开始,我希望上面的查询列出表中的商店,按它们与给定$latitude和$longitude的用户的距离排序。
我确实得到了结果,但前提是我将查询从"距离<25"编辑为"距离<5000"(或其他大数字),尽管结果似乎不是基于与用户给定坐标的距离的顺序。
是查询以错误的方式计算了吗?我很困,似乎找不到任何解决方案。
试试这个:
select * from (
SELECT Store_name, GPS_latitude, GPS_longitude,
SQRT(
POW(69.1 * (GPS_latitude - $longitude), 2) +
POW(69.1 * ($latitude - GPS_longitude) * COS(GPS_latitude / 57.3), 2)
) AS distance
FROM table
) as vtab
WHERE distance < 25
ORDER BY distance;
PS,但我强烈建议您查看"MySQL特定的空间关系函数"