2010-11-17 103 views
1

嘿,所有... 我已經接受了全球搜索項目的任務。 他們想要搜索圖片的數據庫,所有這些數據庫都在mysql數據庫中使用每張圖片的long/lat 引用。按照經度和緯度排序mysql表上的結果,然後是緯度,而不是圓形半徑

但是,他們的搜索標準有點特定。

簡化表結構是: id INT汽車股份有限公司主要 imagePath VARCHAR 255 long十進制12,7 lat十進制12,7

我需要提供SQL語句開始長/緯度位置。 然後,他們想要接收34張圖像,從最初的 長參考向南。一旦他們達到-90(地球的底部),彈出 超過1度向右/東,並搜索到北方90和 重複,直到找到34個圖像。

什麼讓我感到困惑的是如何計算負增加變化..確保我們沿着地球'長'參考上下循環。

有沒有人以前做過這個..? 我想在單個查詢中做到這一點... (我已經看到了如何取得基於圓的半徑的結果,但我的客戶..保佑他們..不想這樣做)

好的,回到谷歌!

思考...

的Tris ...

+1

提示:轉換爲整數並使用模運算創建排序順序乘數,然後按經度排序,然後按緯度乘以排序順序乘數。但是還有一些邊緣情況需要照顧(等緯度和潛在的環繞+180 - > -180)。 – 2010-11-17 21:03:37

回答

1

輸入是$ the_lat和$ the_long

SELECT * 
FROM table 
WHERE long > $the_long 
OR (long = $the_long AND lat >= $the_lat) 
ORDER BY long ASC, lat ASC 
LIMIT 34 

原樣,這是一個單向搜索 - 它不會換行大約需要多長時間< $ the_long。

+0

哇,這麼簡單..! – Beertastic 2010-11-19 06:51:01

+0

我正在谷歌交替排序...或類似的東西! – Beertastic 2010-11-19 06:51:46