我需要創建一個動態SQL選擇語句,從一個名爲Metros
的表中獲取城市,州與州的組合,距離一組傳入的GPS座標中的距離最小。請注意,傳入的GPS座標集是將從列表中拉出的變量。爲了計算我需要能夠通過經度和緯度的距離,並使用半正式公式,計算表Metros
中當前行與所有291個城市之間的距離,然後選擇最小城市狀態。Rails:動態選擇活動記錄
在rails中,我遇到的問題是如何正確創建Metros
表的select語句以允許傳入可變GPS座標,但也使用Active Record而不是傳統的SQL。
目前,這是多遠我已經得到了:
Metros.select(
"major_city
, major_state
," haversine(row[latitude], row[longitude], lat2, long2)" as 'distance'")
.group("major_city,major_state").limit(1).order('distance')
row[latitude], row[longitude]
在可變緯度和經度(本行,我比較所有291個城市的傳遞/州GPS座標在Metros
表需要選擇Haversine函數輸出距離最小的那個)。至於lat2, long2
,他們需要參考Metros
表中的緯度和經度列。
在構建此查詢時,我不知道如何輸入Haversine函數以及使用Active Record從數據庫中提取這些記錄並進行計算。
有沒有更好的方法來做我想做的事情?