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的主要内容,如果未能解决你的问题,请参考以下文章