SQL Query获取最常访问的Laravel

时间:2016-09-13 07:51:22

标签: mysql sql postgresql laravel laravel-5.2

我在 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

lcoations

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毫米或什么?

如何查询?

1 个答案:

答案 0 :(得分:0)

回答,以便有人获得帮助。 根据地理位置,如果纬度和经度的精度在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