- ベストアンサー
MySQLで最近傍探索
MySQLで最近傍探索するにはどんなクエリ(またはストアド)を書けばいいのでしょうか。 例えば http://uchukamen.com/WindowsMobile/WebServiceGetAmedasCode/Default.htm の4.3にあるような、クエリの経度と緯度に最も近いデータを返すような動作をさせたいです。 MySQLは学び始めたばかりなんですが、上の例にあるselect top 1のような構文は用意されてませんよね? ついでで申し訳ないんですが、phpMyAdminでMySQLを扱う良い参考書があれば教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
データベースの座標値をx1,y1とし、実地の座標値をx2,y2とします その差の2乗をたした値が距離の2乗ですからdis2として disでソートして一番上のデータをとればいいでしょう SELECT id,pow(x1-x2,2)+pow(y1-y2,2) as dis2 FROM `テーブル` WHERE 1 order by dis2 asc limit 1 のようになります。 マッチする場所が2ヶ所以上あってすべて書き出したい場合などあるかと 思いますが、複雑な書式になりますので割愛 phpMyAdminについては話しが全然ちがうので同じ質問中に聞くのは どうかと思いますが、書籍という意味では、あまりいいものをみたことが ありません。やはりwebで探すのが賢明かと
お礼
お礼が送れて申し訳ございません。 大変参考になりました。