• ベストアンサー

MySQLで最近傍探索

MySQLで最近傍探索するにはどんなクエリ(またはストアド)を書けばいいのでしょうか。 例えば http://uchukamen.com/WindowsMobile/WebServiceGetAmedasCode/Default.htm の4.3にあるような、クエリの経度と緯度に最も近いデータを返すような動作をさせたいです。 MySQLは学び始めたばかりなんですが、上の例にあるselect top 1のような構文は用意されてませんよね? ついでで申し訳ないんですが、phpMyAdminでMySQLを扱う良い参考書があれば教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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で探すのが賢明かと

L1L
質問者

お礼

お礼が送れて申し訳ございません。 大変参考になりました。

関連するQ&A