子查询问题
Sub Query Problems
我无法理解如何编写以下代码。我有一个 table 和一个 lat/longitudes 列表,另一个 table 有一个带有纬度和经度的地名列表。我需要做的是:
1) 遍历 table 1 中的每一项,抓取纬度和经度,在 table 2 上进行半径搜索并抓取地名,用新的地名更新 table 1。此代码为我提供了我需要的地名:
$sql="SELECT *, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(lon) - radians('".$lng."')) + sin(radians('".$lat."')) *
sin(radians(lat))))
AS distance
FROM cats HAVING distance < 5 ORDER BY distance LIMIT 1";
我需要帮助弄清楚如何将 2 个查询连接在一起,或者我从 table 循环遍历 lat/longs 的最佳方式 1. 我尝试使用 php 循环,但我认为那不是最好的方法,我无法让它工作
感谢您的帮助或建议!
根据您的描述,我认为您需要这样的东西:
UPDATE table1 SET place_name = (SELECT place_name FROM
table2
WHERE (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(lon) - radians('".$lng."')) + sin(radians('".$lat."')) *
sin(radians(lat)))) < 5
ORDER BY (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(lon) - radians('".$lng."')) + sin(radians('".$lat."')) *
sin(radians(lat)))) DESC
LIMIT 1)
我无法理解如何编写以下代码。我有一个 table 和一个 lat/longitudes 列表,另一个 table 有一个带有纬度和经度的地名列表。我需要做的是: 1) 遍历 table 1 中的每一项,抓取纬度和经度,在 table 2 上进行半径搜索并抓取地名,用新的地名更新 table 1。此代码为我提供了我需要的地名:
$sql="SELECT *, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(lon) - radians('".$lng."')) + sin(radians('".$lat."')) *
sin(radians(lat))))
AS distance
FROM cats HAVING distance < 5 ORDER BY distance LIMIT 1";
我需要帮助弄清楚如何将 2 个查询连接在一起,或者我从 table 循环遍历 lat/longs 的最佳方式 1. 我尝试使用 php 循环,但我认为那不是最好的方法,我无法让它工作
感谢您的帮助或建议!
根据您的描述,我认为您需要这样的东西:
UPDATE table1 SET place_name = (SELECT place_name FROM
table2
WHERE (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(lon) - radians('".$lng."')) + sin(radians('".$lat."')) *
sin(radians(lat)))) < 5
ORDER BY (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(lon) - radians('".$lng."')) + sin(radians('".$lat."')) *
sin(radians(lat)))) DESC
LIMIT 1)