Plsql 给定纬度、经度和半径,查找该区域中的所有联系人。但该表只包含纬度和经度列

Plsql 给定纬度、经度和半径,查找该区域中的所有联系人。但该表只包含纬度和经度列,plsql,plsqldeveloper,Plsql,Plsqldeveloper,该解决方案可以找到最小和最大纬度和经度。 然后使用select查询中的between条件获取结果。 但是我如何得到pl/sql中的最大和最小纬度和经度。我想你没有plsql问题,你需要一个公式。下面是一些计算毕达哥拉斯定理的plsql代码: 您想从数据库中选择一些内容。下面是如何使用单个查询执行此操作的示例: SELECT t.*, sqrt(t.posX*t.posX + t.posY+posY) as distance FROM ( select (0 - :yourX) posX,

该解决方案可以找到最小和最大纬度和经度。 然后使用select查询中的between条件获取结果。
但是我如何得到pl/sql中的最大和最小纬度和经度。

我想你没有plsql问题,你需要一个公式。下面是一些计算毕达哥拉斯定理的plsql代码:

您想从数据库中选择一些内容。下面是如何使用单个查询执行此操作的示例:

SELECT t.*, sqrt(t.posX*t.posX + t.posY+posY) as distance FROM
(
    select (0 - :yourX) posX, (0 - :yourY) posY from dual UNION ALL -- fake-table
    select (1 - :yourX) posX, (2 - :yourY) posY from dual UNION ALL
    select (2 - :yourX) posX, (10 - :yourY) posY from dual
) t
WHERE sqrt(t.posX*t.posX + t.posY+posY) < :maxDistance

Postgres可能有一个地理空间库来简化这一过程,但要用蛮力做到这一点,你可以使用哈弗森公式。我没有两个纬度和经度。我只有起始纬度和经度。并给出了半径。例如:给出了伦敦的纬度和经度,半径为100英里。我应该找到伦敦及其周围半径为100英里的所有联系人。您的表中的经纬度点是多少?SQL与此有什么关系?Oracle有一个完整的地理空间库,MDSYS模式中的SDO_几何图形请参阅您的版本的《空间用户指南和参考》。它可能不像Postgres那么容易使用,但它是完整的。
SELECT t.*, sqrt(t.posX*t.posX + t.posY+posY) as distance FROM
(
    select (0 - :yourX) posX, (0 - :yourY) posY from dual UNION ALL -- fake-table
    select (1 - :yourX) posX, (2 - :yourY) posY from dual UNION ALL
    select (2 - :yourX) posX, (10 - :yourY) posY from dual
) t
WHERE sqrt(t.posX*t.posX + t.posY+posY) < :maxDistance