我有一个具有这种结构的表
(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语句有语法错误。
如果数据库返回位于用户输入的两个半径交叉点的位置,我该怎么办?
答案 0 :(得分:2)
尝试在SQL语句中将location替换为location_name。