SQL 查询获取最常访问的地方 Laravel

Posted

技术标签:

【中文标题】SQL 查询获取最常访问的地方 Laravel【英文标题】:SQL Query to get most frequently visited place Laravel 【发布时间】:2017-01-20 17:54:38 【问题描述】:

我在 Laravel 5.2 开发项目。我有这样的数据库结构:

user_visited

id | user_id | latitude     | longitude
01 | 1       | 140.5938388  | 36.3335513
02 | 1       | 140.2631739  | 36.3724621
03 | 1       | 140.0804782  | 36.083233
04 | 1       | 140.0855777  | 36.1048973
05 | 1       | 140.2215081  | 35.981243
06 | 1       | 140.577927   | 36.3114456
07 | 1       | 140.65826    | 36.6068145
08 | 1       | 140.109301   | 36.0865606
09 | 1       | 140.2055252  | 35.926693
10 | 1       | 139.7540075  | 36.1662458
11 | 1       | 140.2637594  | 36.241148
12 | 1       | 139.8043185  | 36.1115211
13 | 1       | 140.2183821  | 36.0601167
14 | 1       | 139.7540075  | 36.1662458
15 | 1       | 140.0309725  | 36.0381176

涂装

id | Location name  | Type       | Address  | Latitude    | Longitude
31 | Murse Park     | Theme Park | 552-18   | 140.6066128 | 36.3985857
32 | Dom Park       | Theme Park | 552-12   | 140.6417064 | 36.5436575
33 | Football Park  | Theme Park | 588-1    | 140.3690094 | 36.4195418
34 | Istanbul Park  | Theme Park | 37       | 140.3330587 | 36.5449685

这是从移动应用获取的用户位置历史记录,每n 秒获取一次位置信息。

从用户访问过的位置历史记录中,我想知道用户最常访问的地方。该怎么做?

事实上,用户可以访问同一个位置,但经度和纬度并不完全相同。

也许我们必须将半径设置为 500 米或什么?

如何查询?

【问题讨论】:

能否分享一些经纬度的样本数据? 到目前为止你尝试了什么? @Arulkumar,我为一个用户添加了一些示例数据,用户 1 访问过的地方.. @Sami 我不知道我必须使用什么查询,我只是用 asoc 找到查询,但它只能从我存在的地方获得最近的地方。 @YudiYohanesSeptianGotama 是否有与这些位置相关的名称?我的意思是这些位置必须代表一些特定的地方,对吗?其中您希望显示访问量最大的。 【参考方案1】:

回答以便有人可以得到帮助。 根据地理位置,如果一个地方的纬度和经度相似,精度为 5 到 6,我们可以认为它是相同的。 假设一个地方的纬度和经度是(140.5938388,36.3335513)并且用户访问纬度和经度为(140.59383723,36.33355213)的地方然后通过以5的精度进行查询,即(140.59383,36.33355)我们得到相同的块位置存在,计算这些地方/位置将为您提供经常访问的地方。

已编辑:

SELECT count(location_name) FROM locations
LEFT JOIN user_visited ON TRUNCATE(user_visited.latitude,5) = TRUNCATE(locations.latitude,5) AND TRUNCATE(user_visited.longitude,5) = TRUNCATE(locations.longitude,5)
WHERE user_visited.user_id = 1

【讨论】:

这如何回答这个问题? @DanielM 问题是 Yudi 无法获得访问量最大的地方,但由于纬度变化很小,他很难获得访问量最大的地方。所以我只是给出了一个想法,我做了什么来得到同样的东西。 感谢@DanielM 的赞赏。

以上是关于SQL 查询获取最常访问的地方 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云sql数据读取审计日志

合并两个查询以获取 SQL 中的合并值

万字长文,最常问的MySQL面试题集合

使用 SQLKorma 获取语法异常:使用 SQL 执行查询失败

sql语句 分次(多次)获取不重复记录,请高手赐教!

php 按时间查询怎么做呀?不知道SQL怎么写。 不如,查询页面有两个时间选择的地方,用户选择开