首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP MySQL如何计算行间距离?

PHP MySQL如何计算行间距离?
EN

Stack Overflow用户
提问于 2019-11-22 07:11:18
回答 1查看 83关注 0票数 0

我有一张这样的桌子:

代码语言:javascript
复制
stepID   | UserID| Date        | Lat        | Lng
1        |1      | 2019-10-11  | -7.2905838 | 112.5655568
2        |1      | 2019-10-11  | -7.2349607 | 112.6106177
3        |1      | 2019-10-11  | -7.2345435 | 112.6112432
4        |1      | 2019-10-12  | -7.2529265 | 112.6542999

我需要计算的距离,用户已访问同一天(例如2019-10-11)。因此,我们将在PHP页面上显示为“是”(下面的公里数就是一个例子):

代码语言:javascript
复制
From step 1 to 2: 2 KM
From step 2 to 3: 3 KM
From step 3 to 4: 3 KM
TOTAL FOR TODAY: 8 KM

我搜索并搜索了这个堆栈溢出的历史,但没有找到我今天面对的情况。需要你的建议如何查询。以前谢谢你,GBU一直都是。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-22 07:46:59

这不是MySQL的最佳任务。在任何编程语言中通过读取DB 1×1中的行来执行它会好得多。然而,如果您想要准确地使用MySQL,那么类似的情况(假设StepID是没有间隙的序列号):

代码语言:javascript
复制
SELECT UserID, SUM(km) total
FROM (
  SELECT t1.UserID, 
    DEGREES(ACOS(LEAST(1.0, COS(RADIANS(t1.Lat))
         * COS(RADIANS(t2.Lat))
         * COS(RADIANS(t1.Lon- t2.Lon))
         + SIN(RADIANS(t1.Lat))
         * SIN(RADIANS(t2.Lat))))) km
  FROM table t1
  JOIN table t2 ON t1.UserID = t2.UserID and t1.StepID = t2.StepID - 1
) t
GROUP BY UserID

我得到的公式是:https://stackoverflow.com/a/24372831/2244262

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58989217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档