使用纬度经度距离mysql join从数据库检索记录

卢多维科·洛雷蒂(Ludovico Loreti)

我发现了很多类似的帖子,但没有可比的问题。

在使用纬度和经度检索距离的同时,我已经连接了数据库中的两个表。

具体来说,这些是我的表格:

registeredUsers:
publicSSID, nome, cognome, eta, sesso, foto, informazioni

(翻译:publicSSID =唯一ID,名称=名称,姓=姓,年龄=年龄,性别=性别,照片=照片,信息=信息)

position:
ssid, latitude, longitude

(ssid = publicSSID->相同的东西)

这是我的查询:

SELECT publicSSID, nome, cognome, eta, sesso, foto, position.latitude, 
    position.longitude, informazioni, (3956 * 2 * 
      ASIN(SQRT( POWER(SIN(($lat - abs(latitude))*pi()/180/2),2)
      +COS($lat*pi()/180 )*COS(abs(latitude)*pi()/180)
      *POWER(SIN(($lon-longitude)*pi()/180/2),2)))) 
      as distance 
      FROM registeredUsers, position 
      WHERE registeredUsers.publicSSID = position.ssid
      and longitude between ($lon - 1/abs(cos(radians($lat))*69)) 
      and ($lon + 1/abs(cos(radians($lat))*69)) 
      and latitude between ($lat -(1/69)) 
      and ($lat +(1/69)) 
      having distance < $dist ORDER BY distance limit 200;

其中$lat$lon$dist分别是我的输入纬度,经度和公里我用它来检索记录的距离。因此,例如,如果有两个我们知道相距10公里以内的经度和纬度记录,如果我设置$dist = 10,数据库必须向我返回这两个记录。

现在问题很多。

首先,说$lat, $lon还将存储在表中position (因为尝试执行此请求的用户是想要在自己附近找到另一个用户的用户),而我不希望它检索自己(大声笑),但是目前,该查询只检索我的记录(因此,我自己检索的纬度和经度等于$lat, $lon)。

我尝试对其进行编辑,并删除了以下行:

WHERE registeredUsers.publicSSID = position.ssid

所以现在查询是:

SELECT publicSSID, nome, cognome, eta, sesso, foto, position.latitude, 
    position.longitude, informazioni, (3956 * 2 * 
      ASIN(SQRT( POWER(SIN(($lat - abs(latitude))*pi()/180/2),2)
      +COS($lat*pi()/180 )*COS(abs(latitude)*pi()/180)
      *POWER(SIN(($lon-longitude)*pi()/180/2),2)))) 
      as distance 
      FROM registeredUsers, position 
      WHERE longitude between ($lon - 1/abs(cos(radians($lat))*69)) 
      and ($lon + 1/abs(cos(radians($lat))*69)) 
      and latitude between ($lat -(1/69)) 
      and ($lat +(1/69)) 
      having distance < $dist ORDER BY distance limit 200;

现在的新问题是,它可以检索到我周围的所有人(包括我自己),但它会更改每个纬度和经度(结果不在数据库中),并用中的纬度和经度覆盖它$lat,$lon

我能做些什么?有人知道使用针对MySQL的这种Join来检索我想要的内容的方法吗?

谢谢

米哈伊尔·戈布尔斯基

我可能迟到了,但是看起来第一个查询确实可以满足您的要求。只需删除一些奇怪的条件并获得接近指定点的所有用户:

SELECT publicSSID, nome, cognome, eta, sesso, foto, position.latitude, 
    position.longitude, informazioni, (3956 * 2 * 
      ASIN(SQRT( POWER(SIN(($lat - abs(latitude))*pi()/180/2),2)
      +COS($lat*pi()/180 )*COS(abs(latitude)*pi()/180)
      *POWER(SIN(($lon-longitude)*pi()/180/2),2)))) 
      as distance 
      FROM registeredUsers, position 
      WHERE registeredUsers.publicSSID = position.ssid
      having distance < $dist ORDER BY distance limit 200;

如果要排除用户,执行查询的用户只需将其ID作为参数以及诸如registeredUsers.publicSSID <> $ currentuserid之类的条件进行传递。

这里http://sqlfiddle.com/#!2/33f96d/1/1是您查询的模型

(我必须对$ lat = 10,$ lon = 10和两个不同的$ dist-1000和10000进行硬编码)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用gps数据使用纬度和经度计算距离。

来自分类Dev

如何根据纬度和经度距离从Sqlite数据库中检索行?

来自分类Dev

从GPS数据计算距离[经度和纬度]

来自分类Dev

使用PHP从MySQL数据库仅检索今天的记录

来自分类Dev

如何能够显示标记的地名而不是从mysql数据库检索到的经度,纬度?

来自分类Dev

如何在熊猫数据框中使用纬度和经度计算距离?

来自分类Dev

使用带有循环的不同长度的不同数据帧中的纬度和经度数据计算距离

来自分类Dev

Laravel使用mysql视图而不是表本身从数据库中检索记录

来自分类Dev

我想从MySQL数据库中检索去年的记录,但它正在从数据库中检索所有数据

来自分类Dev

如果键只返回true,如何使用join从Firebase数据库中检索数据?

来自分类Dev

在MySQL数据库中搜索半径(纬度/经度)内的值

来自分类Dev

如何在MySQL数据库中存储(纬度,经度,海拔)元组?

来自分类Dev

在MySQL数据库中搜索半径(纬度/经度)内的值

来自分类Dev

从MySQL数据库检索数据

来自分类Dev

从MySQL数据库检索数据

来自分类Dev

从MySQL数据库检索数据

来自分类Dev

如何使用 ajax 和 jquery 从我的数据库中检索记录?

来自分类Dev

使用Ajax从数据库检索数据

来自分类Dev

如何使用数据库中的纬度和经度值在Google地图上显示?

来自分类Dev

从MySQL数据库检索图像

来自分类Dev

如何使用经度和纬度计算距离?

来自分类Dev

使用游标检索SQLite数据库

来自分类Dev

使用INNER JOIN的SQL查询排除了某些字段值为MP的数据库记录

来自分类Dev

在Python中给定纬度和经度数据的有效距离矩阵计算方法

来自分类Dev

计算数据框中两个纬度与经度之间的距离

来自分类Dev

使用RESTful Web服务从MySql数据库检索数据

来自分类Dev

从数据库(db2)检索纬度和经度,并在IBM Worklight中显示在地图中

来自分类Dev

在数据库中插入纬度经度

来自分类Dev

在 Python 中比较数据库中的纬度/经度值

Related 相关文章

  1. 1

    使用gps数据使用纬度和经度计算距离。

  2. 2

    如何根据纬度和经度距离从Sqlite数据库中检索行?

  3. 3

    从GPS数据计算距离[经度和纬度]

  4. 4

    使用PHP从MySQL数据库仅检索今天的记录

  5. 5

    如何能够显示标记的地名而不是从mysql数据库检索到的经度,纬度?

  6. 6

    如何在熊猫数据框中使用纬度和经度计算距离?

  7. 7

    使用带有循环的不同长度的不同数据帧中的纬度和经度数据计算距离

  8. 8

    Laravel使用mysql视图而不是表本身从数据库中检索记录

  9. 9

    我想从MySQL数据库中检索去年的记录,但它正在从数据库中检索所有数据

  10. 10

    如果键只返回true,如何使用join从Firebase数据库中检索数据?

  11. 11

    在MySQL数据库中搜索半径(纬度/经度)内的值

  12. 12

    如何在MySQL数据库中存储(纬度,经度,海拔)元组?

  13. 13

    在MySQL数据库中搜索半径(纬度/经度)内的值

  14. 14

    从MySQL数据库检索数据

  15. 15

    从MySQL数据库检索数据

  16. 16

    从MySQL数据库检索数据

  17. 17

    如何使用 ajax 和 jquery 从我的数据库中检索记录?

  18. 18

    使用Ajax从数据库检索数据

  19. 19

    如何使用数据库中的纬度和经度值在Google地图上显示?

  20. 20

    从MySQL数据库检索图像

  21. 21

    如何使用经度和纬度计算距离?

  22. 22

    使用游标检索SQLite数据库

  23. 23

    使用INNER JOIN的SQL查询排除了某些字段值为MP的数据库记录

  24. 24

    在Python中给定纬度和经度数据的有效距离矩阵计算方法

  25. 25

    计算数据框中两个纬度与经度之间的距离

  26. 26

    使用RESTful Web服务从MySql数据库检索数据

  27. 27

    从数据库(db2)检索纬度和经度,并在IBM Worklight中显示在地图中

  28. 28

    在数据库中插入纬度经度

  29. 29

    在 Python 中比较数据库中的纬度/经度值

热门标签

归档