2012-03-14 9 views
0

私は現在、状態、都市、緯度、経度の4つの列を持つテーブルをmysqlデータベースに持っています。 緯度と経度の列の型はfloat(10,6)です。 WXYZは、任意の桁できmysql番号ワイルドカード

SELECT * FROM `mytable` WHERE `Latitude` LIKE '41.wxyz' and 'Longitude' LIKE '-87.wxyz' 

:私は、私は同様の緯度経度のエントリを検索することができますMySQLのクエリを実装するために探しています 、例えば、私はこのような何かを実装したいです。私はこれをやりたいので、任意の任意の座標に近いすべての都市を返すことができます。誰も私を助けることができますか?

解説/更新 以下の回答で私のアプリケーションが私の望んだことをすることができませんでした。私は皆様のご意見をお待ちしております。 SQLクエリの知識を広げることができました。緯度と経度のペアについて私のアプリケーションが近くの場所を見つけるために、私はHaversine式を使用しました。このGoogleマップの記事で詳しく説明します。 https://developers.google.com/maps/articles/phpsqlsearch

SELECT id, (3959 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20; 

ここで、latとlngはmysqlテーブルの列です。 37と-122は、あなたのテーブルの他の近くの座標を見つける座標です。 :)あなたにも、このことによってそれを行うことができます

答えて

2

SELECT * FROM `mytable` WHERE (`Latitude` between 41.0 and 42.0) and ('Longitude' between -87.0 and -88.0) 

はこれを試してみてください。

2

ROUND関数を使用できます。 -

SELECT * FROM `mytable` 
    WHERE ROUND(Latitude, 0) = 41 AND ROUND(Longitude, 0) = -87