查找MySQL

时间:2017-02-15 02:46:38

标签: mysql latitude-longitude

我有一个具有这种结构的表

(location_name, address, latitude, longitude)

首先,用户输入了两个位置名称和两个半径。

其次,数据库查找输入位置的纬度和经度。
(在下文中,它被称为'entered_lat'和'entered_long'。)

第三,数据库查找并返回位于用户输入的两个半径交叉点的位置。

当用户只输入一个位置和半径时,我使用了以下SQL语句。

SELECT location_name, latitude, longitude, 
(6371*acos(cos(radians('entered_lat'))*cos(radians(latitude))*cos(radians(longitude)-
radians('entered_long'))+sin(radians('entered_lat'))*sin(radians(latitude))))
AS distance FROM location_table HAVING distance < 'entered_radius';

因此,我尝试使用以下SQL语句来查找两个半径的交集。

SELECT location_name, latitude, longitude, 
(6371*acos(cos(radians('entered_lat1'))*cos(radians(latitude))*cos(radians(longitude)-
radians('entered_long1'))+sin(radians('entered_lat1'))*sin(radians(latitude))))
AS distance FROM location_table HAVING distance < 'entered_radius1'
 AND 
(6371*acos(cos(radians('entered_lat2'))*cos(radians(latitude))*cos(radians(longitude)-
radians('entered_long2'))+sin(radians('entered_lat2'))*sin(radians(latitude))))
AS distance FROM location_table HAVING distance < 'entered_radius2';

但是该SQL语句有语法错误。

如果数据库返回位于用户输入的两个半径交叉点的位置,我该怎么办?

1 个答案:

答案 0 :(得分:2)

尝试在SQL语句中将location替换为location_name。