Lat/Long 纬度和经度内部连接时,查询将不起作用。为什么?
Lat/Long query won't work when the lat and long is inner joined. Why?
这个查询非常适合我将 table 个位置与数据 table 中的纬度和经度元值进行内部连接。
SELECT
locations_table.location_id AS locationid, lat_table.meta_value AS lat,
long_table.meta_value AS lng
FROM locations_db.locations AS locations_table
INNER JOIN data.data_meta AS lat_table ON
lat_table.location_id=locations_table.locaiton_id
INNER JOIN data.data_meta AS long_table ON
long_table.location_id=locations_table.locaiton_id
WHERE locations_table.master_location='$mastergroupid'
AND lat_table.meta_key='latitude' AND long_table.meta_key='longitude'
但是当我添加这个计算经纬度距离的公式时,它会抛出一个布尔错误。
SELECT locations_table.location_id AS locationid, lat_table.meta_value AS
lat, long_table.meta_value AS lng,
SQRT(
POW(69.1 * (lat - $lat), 2) +
POW(69.1 * ($lng - lng) * COS(lat / 57.3), 2)) AS distance
我知道 "as distance" 公式适用于 table,其中纬度和经度只是 table 的一部分,而不是内部连接。
我错过了什么?我不能对内部连接值进行 AS DISTANCE 计算吗,因为它在技术上还不在 table 中?
您已为 meta_value
列指定了列别名,并在 select
子句中使用这些别名。这是不可能的,见
https://dev.mysql.com/doc/refman/5.7/en/problems-with-alias.html:
An alias can be used in a query select list to give a column a
different name. You can use the alias in GROUP BY, ORDER BY, or HAVING
clauses to refer to the column:
您必须在计算中写入完全限定的 table+列名:
SELECT
locations_table.location_id AS locationid,
lat_table.meta_value AS lat,
long_table.meta_value AS lng,
SQRT(
POW(69.1 * (lat_table.meta_value - $lat), 2) +
POW(69.1 * ($lng - long_table.meta_value) * COS(lat_table.meta_value / 57.3), 2)) AS distance
[... rest of query ...]
这个查询非常适合我将 table 个位置与数据 table 中的纬度和经度元值进行内部连接。
SELECT
locations_table.location_id AS locationid, lat_table.meta_value AS lat,
long_table.meta_value AS lng
FROM locations_db.locations AS locations_table
INNER JOIN data.data_meta AS lat_table ON
lat_table.location_id=locations_table.locaiton_id
INNER JOIN data.data_meta AS long_table ON
long_table.location_id=locations_table.locaiton_id
WHERE locations_table.master_location='$mastergroupid'
AND lat_table.meta_key='latitude' AND long_table.meta_key='longitude'
但是当我添加这个计算经纬度距离的公式时,它会抛出一个布尔错误。
SELECT locations_table.location_id AS locationid, lat_table.meta_value AS
lat, long_table.meta_value AS lng,
SQRT(
POW(69.1 * (lat - $lat), 2) +
POW(69.1 * ($lng - lng) * COS(lat / 57.3), 2)) AS distance
我知道 "as distance" 公式适用于 table,其中纬度和经度只是 table 的一部分,而不是内部连接。
我错过了什么?我不能对内部连接值进行 AS DISTANCE 计算吗,因为它在技术上还不在 table 中?
您已为 meta_value
列指定了列别名,并在 select
子句中使用这些别名。这是不可能的,见
https://dev.mysql.com/doc/refman/5.7/en/problems-with-alias.html:
An alias can be used in a query select list to give a column a different name. You can use the alias in GROUP BY, ORDER BY, or HAVING clauses to refer to the column:
您必须在计算中写入完全限定的 table+列名:
SELECT
locations_table.location_id AS locationid,
lat_table.meta_value AS lat,
long_table.meta_value AS lng,
SQRT(
POW(69.1 * (lat_table.meta_value - $lat), 2) +
POW(69.1 * ($lng - long_table.meta_value) * COS(lat_table.meta_value / 57.3), 2)) AS distance
[... rest of query ...]