我在确定如何实现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,但对其他解决方案开放。
非常感谢!!!