2010-09-02 59 views
1

我想弄清楚如何從基於數字的親密度來選擇MySQL表中的數據。這是我的意思。基於數字從數據庫中選擇數據

我正在寫一個存儲位置座標(經度和緯度)的應用程序,我希望能夠根據用戶位置從數據庫中選擇數據。舉例來說,我在數據庫中有三個位置:[(-70.425,45.836),(-74.234,41.639),(-75.747,41.836)],用戶的位置是(-74.345,41.625 )。我希望能夠選擇條目,以便它們按照距離用戶的距離展開,按以下順序獲取三個條目:[(-74.234,41.639),(-75.747,41.836),(-70.425, 45.836)。

這甚至可能在MySQL中,或者我將不得不從數據庫中選擇一些條目並在我的編程語言中進行計算?

回答

2

看看這篇文章

http://zcentric.com/2010/03/11/calculate-distance-in-mysql-with-latitude-and-longitude/

引述

「所以,你有一個滿桌子的成員或地方與他們相關聯的緯度和經度的的。只需更換$ LAT和$ lon與您想要找到距離的中心點相關聯,也可以將距離< = 10更改爲您要搜索的數字,這會將結果限制爲距離起點不到10英里的所有結果

SELECT ((ACOS(SIN($lat * PI()/180) * SIN(lat * PI()/180) + COS($lat * PI()/180) * COS(lat * PI()/180) * COS(($lon – lon) * PI()/180)) * 180/PI()) * 60 * 1.1515) AS距離FROM成員HAVING距離<=’10′ ORDER BY距離ASC

注$經度和緯度$會是你的PHP fvariables。 lat和lon(sans $)是本示例中的列名稱,即

表將是具有經度和緯度列的成員