获取sql中给定半径内的所有标记
我试图用下面描述的sql语句获取数据库中存储的所有位置 我的sql语句是:获取sql中给定半径内的所有标记,sql,coldfusion,google-maps-api-3,distance,Sql,Coldfusion,Google Maps Api 3,Distance,我试图用下面描述的sql语句获取数据库中存储的所有位置 我的sql语句是: SELECT TOP(10) *, ( 6371 * acos( cos( radians(<cfqueryparam cfsqltype="CF_SQL_Nu
SELECT TOP(10)
*,
(
6371 *
acos(
cos(
radians(<cfqueryparam cfsqltype="CF_SQL_Numeric" value="#FORM.latitude#">)
) *
cos(
radians( custLat )
) *
cos(
radians( custLong ) -
radians(<cfqueryparam cfsqltype="CF_SQL_Numeric" value="#FORM.longtitude#">)
) +
sin(
radians(<cfqueryparam cfsqltype="CF_SQL_Numeric" value="#FORM.latitude#">)
) *
sin(
radians( custLat )
)
)
) AS distance
FROM customers
HAVING distance < 25
ORDER BY distance;
选择顶部(10)
*,
(
6371 *
acos(
因为(
弧度()
) *
因为(
弧度(卡斯特拉)
) *
因为(
弧度(长)-
弧度()
) +
罪(
弧度()
) *
罪(
弧度(卡斯特拉)
)
)
)作为距离
来自客户
距离小于25的
按距离排序;
问题是我遇到了一个错误,无法找出原因。。。
错误:列名“distance”无效。
在这一行:radians()
(第二次出现)
为什么会出现此错误?如何修复它?您做错了什么。以下是解决方案:
SELECT distance FROM
(SELECT TOP(10)
*,
(
6371 *
acos(
cos(
radians(<cfqueryparam cfsqltype="CF_SQL_Numeric" value="#FORM.latitude#">)
) *
cos(
radians( custLat )
) *
cos(
radians( custLong ) -
radians(<cfqueryparam cfsqltype="CF_SQL_Numeric value="#FORM.longtitude#">)
) +
sin(
radians(<cfqueryparam cfsqltype="CF_SQL_Numeric" value="#FORM.latitude#">)
) *
sin(
radians( custLat )
)
)
) AS distance
FROM customers
) newTable
HAVING distance < 25
GROUP BY distance
ORDER BY distance;
选择距离
(选择顶部(10)
*,
(
6371 *
acos(
因为(
弧度()
) *
因为(
弧度(卡斯特拉)
) *
因为(
弧度(长)-
弧度(您可以通过在sql server或mysql server中创建存储过程或视图来解决此问题。这会产生另一个错误:“newTable.distance”列在HAVING子句中无效,因为它不包含在聚合函数或GROUP BY子句中。抱歉。需要将GROUP BY子句放在HAVING和ORDER BY之间。您应该编辑您的答案以包含正确的代码,然后。