我是一个有用的助手,可以为您翻译文本。
我正在构建一款与“门店定位器”应用程序非常相似的东西。该应用程序通过纬度和经度进行查询,并在半径范围内生成最近的位置。这部分已经完美运行,但我的数据库包括位置和子位置。我希望能够通过位置限制用户获取的不同结果,同时仍然查询和获取有关子位置的所有信息。
假设这是在应用distinct选择之前的结果集:
这相当于为用户生成“两个最近的”位置。经过长时间的谷歌搜索和查看Stack Overflow的建议和类似的问题,我找不到符合这个描述的东西。请问谁可以指导我正确的方向,或者提供一个可以实现这个功能的查询示例?
编辑:以下是我正在运行的查询。它有点复杂,包括经纬度查询。
我正在构建一款与“门店定位器”应用程序非常相似的东西。该应用程序通过纬度和经度进行查询,并在半径范围内生成最近的位置。这部分已经完美运行,但我的数据库包括位置和子位置。我希望能够通过位置限制用户获取的不同结果,同时仍然查询和获取有关子位置的所有信息。
假设这是在应用distinct选择之前的结果集:
| Location | Sub-Location |
+----------+--------------+
| Alpha | Alpha North |
| Alpha | Alpha East |
| Alpha | Alpha West |
| Beta | Beta West |
| Gamma | Gamma North |
| Gamma | Gamma South |
| Delta | Delta West |
| Delta | Delta West 2 |
我需要一种方法来指定一个范围,比如2,并产生以下结果集:
| Location | Sub-Location |
+----------+--------------+
| Alpha | Alpha North |
| Alpha | Alpha East |
| Alpha | Alpha West |
| Beta | Beta West |
这相当于为用户生成“两个最近的”位置。经过长时间的谷歌搜索和查看Stack Overflow的建议和类似的问题,我找不到符合这个描述的东西。请问谁可以指导我正确的方向,或者提供一个可以实现这个功能的查询示例?
编辑:以下是我正在运行的查询。它有点复杂,包括经纬度查询。
SELECT *
FROM(
(SELECT * FROM locationstable JOIN
(SELECT DISTINCT location,
( 3959 * acos( cos( radians(47.4972680) ) * cos( radians( lat ) )
* cos( radians( lon ) - radians(-122.2564740) ) + sin( radians( 47.4972680) )
* sin( radians( lat ) ) ) ) AS distance
FROM locationstable
HAVING distance < 1
LIMIT 0, 5)
locationstable ON locationstable.location = location
)) locationstable
LEFT JOIN informations
ON substring(locationstable.locationsublocation, 4) = informations.storeinformations