mysql計(jì)算附近的地鐵站
問題描述
如圖有兩張表,小區(qū)表(xiaoqu)和地鐵表(metro),現(xiàn)在小區(qū)表里面小區(qū)附近的地鐵站(圖片中紅色字段)是空的。想批量完善這個字段,求助。附近的定義是:離小區(qū)最近,并且在1000米以內(nèi)的一個地鐵站。例如:北京的華騰園小區(qū),附近1000米有雙井和勁松兩個站,但是勁松距離較近,所以華騰園那一行對應(yīng)的就是勁松站。
目前已經(jīng)自定義了兩個經(jīng)緯度之間距離的函數(shù)。getdistance(緯度1,經(jīng)度1,緯度2,經(jīng)度2),函數(shù)代碼如下:
-- getdistance(Lat1 ,Lon1,Lat2 ,Lon2)BEGIN DECLAREdis DOUBLE ; SET dis = ACOS(SIN((Lat1 * 3.1415) / 180) * SIN((Lat2 * 3.1415) / 180) + COS((Lat1 * 3.1415) / 180) * COS((Lat2 * 3.1415) / 180) * COS( (Lon1 * 3.1415) / 180 - (Lon2 * 3.1415) / 180) ) * 6370996.81;RETURN dis ;END
問題解答
回答1:我的思路是:獲取目標(biāo)點(diǎn)坐標(biāo)->以一定范圍r來查看地鐵表中哪些地鐵在r中,如果有,進(jìn)行比較距離,如果沒有增大r,重復(fù)直到r距離超過最大范圍->結(jié)束。
我覺得效率的關(guān)鍵在于計(jì)算、比較距離這塊。
回答2:我覺得這種不應(yīng)該用SQL去實(shí)現(xiàn)。
我去做的話:
獲取小區(qū)信息,獲取屬于哪座城市。
用SQL把當(dāng)前城市地鐵數(shù)據(jù)搜出來。
然后可以用各種算法(或規(guī)則,例如你上面的方法)計(jì)算最近地鐵。
SQL應(yīng)該是用來存儲和獲取數(shù)據(jù)的,不應(yīng)該承載太多邏輯功能
相關(guān)文章:
1. docker-machine添加一個已有的docker主機(jī)問題2. javascript - 關(guān)于圣杯布局的一點(diǎn)疑惑3. 關(guān)于docker下的nginx壓力測試4. php - mysql 模糊搜索問題5. mysql - 在下剛?cè)腴Tsql 關(guān)于sql的語法詢問6. 數(shù)組 - mysql 輸出到 php array 然後印出?7. 我和老師的代碼對照了幾遍沒發(fā)現(xiàn)問題,但是瀏覽器打開就有問題了,求解8. MySQL視圖count速度優(yōu)化9. php新手疑問 利用自定義函數(shù)進(jìn)行加減乘除10. 異步 - python一些內(nèi)置的函數(shù)是阻塞還是非阻塞?
