Sql 在另一个查询中查询以按经度和纬度查找用户位置
Sql query in another query to find user location by longitude and latitude
我卡在了 "basic" sql 命令上。我在 WP ( usermeta ) 中有一个 table 。在这个 table 中,我有 longitude 和 latitude 作为 meta_key。我需要的是使用两个不同的查询来获取 user_id.
的列表
我有一个查询,每次调用它时都应该能够找到具有动态距离的用户(那部分“??SOMETHING??”对我来说是未知的)
SELECT *,
(3959 * acos(cos(radians('LAT VAL')) * cos(radians(latitude))
* cos( radians(longtitude) - radians('LNG VAL')) + sin(radians('LAT VAL'))
* sin(radians(latitude)))) AS distance
FROM ??SOMETHING??
HAVING distance < 15
ORDER BY distance
LIMIT 0 , 10
然后我有这个查询(真的有效)
SELECT user_id,
MAX(IF(meta_key = 'latitude', meta_value, NULL)) AS latitude,
MAX(IF(meta_key = 'longitude', meta_value, NULL)) AS longitude
FROM usermeta
GROUP BY user_id;
我现在已经做了好几个小时了,我一个人无法弄清楚。我觉得我很接近。
如果有人能帮助我,我将不胜感激。
只需更换 ??something??使用您的查询:
SELECT *,
(3959 * acos(cos(radians('LAT VAL')) * cos(radians(latitude))
* cos( radians(longtitude) - radians('LNG VAL')) + sin(radians('LAT VAL'))
* sin(radians(latitude)))) AS distance
FROM
(
SELECT user_id,
MAX(IF(meta_key = 'latitude', meta_value, NULL)) AS latitude,
MAX(IF(meta_key = 'longitude', meta_value, NULL)) AS longitude
FROM usermeta
GROUP BY user_id
) a
HAVING distance < 15
ORDER BY distance
LIMIT 0 , 10
请注意,在上面的查询中,'LAT VAL'
和 'LNG VAL'
是您要查找用户的点的坐标
我卡在了 "basic" sql 命令上。我在 WP ( usermeta ) 中有一个 table 。在这个 table 中,我有 longitude 和 latitude 作为 meta_key。我需要的是使用两个不同的查询来获取 user_id.
的列表我有一个查询,每次调用它时都应该能够找到具有动态距离的用户(那部分“??SOMETHING??”对我来说是未知的)
SELECT *,
(3959 * acos(cos(radians('LAT VAL')) * cos(radians(latitude))
* cos( radians(longtitude) - radians('LNG VAL')) + sin(radians('LAT VAL'))
* sin(radians(latitude)))) AS distance
FROM ??SOMETHING??
HAVING distance < 15
ORDER BY distance
LIMIT 0 , 10
然后我有这个查询(真的有效)
SELECT user_id,
MAX(IF(meta_key = 'latitude', meta_value, NULL)) AS latitude,
MAX(IF(meta_key = 'longitude', meta_value, NULL)) AS longitude
FROM usermeta
GROUP BY user_id;
我现在已经做了好几个小时了,我一个人无法弄清楚。我觉得我很接近。
如果有人能帮助我,我将不胜感激。
只需更换 ??something??使用您的查询:
SELECT *,
(3959 * acos(cos(radians('LAT VAL')) * cos(radians(latitude))
* cos( radians(longtitude) - radians('LNG VAL')) + sin(radians('LAT VAL'))
* sin(radians(latitude)))) AS distance
FROM
(
SELECT user_id,
MAX(IF(meta_key = 'latitude', meta_value, NULL)) AS latitude,
MAX(IF(meta_key = 'longitude', meta_value, NULL)) AS longitude
FROM usermeta
GROUP BY user_id
) a
HAVING distance < 15
ORDER BY distance
LIMIT 0 , 10
请注意,在上面的查询中,'LAT VAL'
和 'LNG VAL'
是您要查找用户的点的坐标