druhoytza979667566 2014-05-12 18:38
浏览 44
已采纳

合并两个MySQL查询并获得两个邮政编码之间的距离

i want to get distance between two zip codes.

HTML form have a field i.e ZIP CODE, Miles(distance).\

DB structure with 7000 records.

id | name | zip_code | lat | lng | status|

MySQL query

   $query =  "SELECT *, 3963 * acos(cos(radians(90-lat ))*cos(radians(90-'".$result['lat']."'))".
              "+sin(radians(90-lat ))* sin(radians(90-'".$result['lat']."'))".
              "*cos(radians(lng- '".$result['lng']."'))) AS distance FROM table_name".
              " WHERE memberLevel='basic' HAVING (distance < '".$miles."') 
                ORDER BY distance ASC";

I don't know what is the right MySQL query to compare distance with input and stored latitude,longitude.

  • 写回答

1条回答 默认 最新

  • douyannuo7733 2014-05-12 18:53
    关注

    You can use the spacial functions and spacial type columns http://dev.mysql.com/doc/refman/5.5/en/spatial-extensions.html

    Here it's a great example to use spacial functions! http://www.mysqlperformanceblog.com/2013/10/21/using-the-new-spatial-functions-in-mysql-5-6-for-geo-enabled-applications/

    Or you can define a custom function

    CREATE DEFINER=`test`@`%` FUNCTION `geoDistance`(`lon1` DOUBLE, `lat1` DOUBLE, `lon2` DOUBLE, `lat2` DOUBLE) RETURNS double LANGUAGE SQL DETERMINISTIC NO SQL SQL SECURITY DEFINER COMMENT '' BEGIN DECLARE v DOUBLE; SELECT cos(radians(lat1)) * cos(radians(lat2)) * cos(radians(lon2) - radians(lon1)) + sin(radians(lat1)) * sin(radians(lat2)) INTO v; RETURN IF(v > 1, 0, 6371000 * acos(v)); END

    then call

    SELECT geoDistance(X(point1), Y(point1), X(spoint2), Y(point2)) result comes in meters

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败