所以这是我的问题:

我有一个数据库表,其中有经度和纬度以及一个时间戳。我需要能够使用PHP在此表中进行搜索。查询将是要查找在一定范围内,并且在一定时间范围内具有经度和纬度的行。

我发现两个单独的查询可以在通过Internet浏览时工作,但是找不到结合多个条件的明确方法。

这两个查询是:

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
  cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) *
  sin( radians( lat ) ) ) ) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;


在此处输入代码

SELECT * FROM `table` WHERE `date_field` BETWEEN 'date1' AND 'date2'


我需要找到时间戳记,纬度和经度在范围内的前20个结果。
谢谢!

编辑:所有字段都在同一张表中。

最佳答案

如果所有数据都在同一表中,则可以执行以下操作:

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance
FROM markers
WHERE date_field BETWEEN 'date1' AND 'date2'
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;

09-30 13:58
查看更多