查询数据库中半径重叠范围内的结果
问题:
在具有地理特征的数据库中数据,您想要选择与指定半径的多个圆形标记部分重叠的结果。现有的 SQL 查询无法准确识别多个标记重叠的结果。
解决方案:
要获得精确结果,可以使用以下 SQL 语句:
<code class="sql">SELECT A.user_id, A.radius_id, A.latitude, A.logitude FROM UserA AS A, (SELECT user_id, latitude, longitude FROM UserB WHERE user_id = 8) AS B WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12*cos(A.latitude), 2)) <= 4</code>
解释:
此查询使用圆的方程来确定给定点(来自 UserA)是否落在圆的半径范围内(由纬度和纬度定义)以 UserB 为起点的半径的经度)。涉及以下步骤:
通过使用此查询,您可以准确识别与多个圆形标记重叠的结果,即使圆圈相互接触也是如此。
以上是如何查询数据库以获取与指定半径重叠的多个圆形标记的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!