0

私は次のテーブルを持っています

1. user table containing 
userid  lastlatitude  lastlongitude  lastlocation
---------------------------------------------------
 1       38.555605      -121.468926     California
 2        30.4518         -84.27277       Florida
2. locations table containing
location_id  latitude  longitude location_name   
----------------------------------------------------
  1      38.7547          -140.7878892622     abc
  2.     40.7547         -111.895672622  New asdsd
  3      41.xxx           xxxxxxxx         xxxxxx

次の出力を取得する必要があります。ユーザーを緯度と経度で渡す場合、ロケーションテーブルに保存されている最も近い20のロケーションを取得する必要があります。

4

1 に答える 1

0

まず、距離を計算する必要があります。これが役立つ場合は、http: //www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL を確認してください。

編集:

http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQLのように、以下のクエリが要件に適合する場合があります。

set @orig_lat=122.4058;  // pass users lat
set @orig_lon=37.7907;   // pass users long

SELECT *,

3956 * 2 * ASIN(SQRT( POWER(SIN((@orig_lat -
abs( 
dest.latitude)) * pi()/180 / 2),2) + COS(@orig_lat * pi()/180 ) * COS( 
abs
(dest.latitude) *  pi()/180) * POWER(SIN((@orig_lon – dest.longitude) *  pi()/180 / 2), 2) ))

as distance FROM locations dest ORDER BY distance limit 20;
于 2012-07-06T08:50:35.503 に答える