如何通过关联在SQL查询中利用地理编码器距离函数

时间:2012-03-25 02:53:53

标签: mysql sql ruby-on-rails-3 distance rails-geocoder

我在确定如何实现SQL查询时遇到一些麻烦,我可以先显示最接近的结果(按计算距离),然后通过它们进行分页。

Class Location
   belongs_to :student
   geocoded_by :address
end


Class Student
   has_one :location
   has_one :school
end


Class School
   belongs_to :student
end

现在在SQL中,我想要一个可以通过关联Student.joins(:location)的查询,并从正在搜索的学生的角度找到最接近的学生。这是在指定特定学校(因此是整个学生的一部分)之后

例如,Joe去了LSU并希望显示最近的学生名单,这些学生也会去LSU。但距离是基于Joe的位置,所以如果Bob运行相同的查询,这将是不同的。

所以我知道地理编码器提供的东西比如Location.nearbys(10),但我真正喜欢的是说

joe = Student.find("Joe")

closest_lsu_stdents_to_joe = Student.where("school = LSU").order(distance_to(joe)).paginate(:page => params[:page])

所以我不想将搜索限制为像nearbys那样的指定半径。我只是希望数据库计算Joe和LSU所有其他学生之间的距离,并首先返回最接近的学生。然后乔可以通过分页查看所有结果。

非常感谢任何帮助。我正在使用MySQL,但对其他解决方案开放。

非常感谢!!!

0 个答案:

没有答案