因此,当我启动Web应用程序时,服务器获取用户地理位置并将其另存为变量(纬度/经度) 我有一个数据库:ID,名称,纬度,经度
现在我想从数据库中选择所有条目并按距离排序
我知道如何计算坐标之间的距离,但我不知道如何订购东西"生活"
你们可以给我一个如何解决这个问题的提示吗?
答案 0 :(得分:2)
你可以做这样的事情
SELECT id,name,latitude,longitude, <Your_formula> distance from <table_name> order by distance
这是
的sqlfiddle答案 1 :(得分:1)
您可以在order by
子句中指定距离计算(例如,其(经度+纬度)除以42)
select ID, Name, Latitude, Longitude, (Longitude + Latitude) / 42 as Distance
from YourTable
order by (Longitude + Latitude) / 42
但是,由于距离计算可能比(经度+纬度)/ 42略微复杂,您可能需要考虑根据结果集中列的序数对结果进行排序(我认为大多数数据库都支持这个)。所以像......
select ID, Name, Latitude, Longitude, /* Insert Distance Calculation Here */ as Distance
from YourTable
order by 5 -- Column ordinals are 1-based
你应该注意到这种方法存在一些问题。例如,如果更改了列的顺序或添加了列,则还必须更改order by
序号,否则您将看到意外的结果。显然,如果您按字段名称或计算进行订购,这不是问题。