を取得するにはどのように私は2つのテーブル最小半径の場所
1. feeds => id,name 2. feed_locations => id, feed_id, latitude,longitude,location_name
フィード複数の場所を持っています。
今私はので、私はGoogleの位置からフェッチ私は、ユーザーの緯度や経度を必要とする利用者の現在位置からのフィードにより近い
を検索すると、半径
今私は、このMySQLのクエリを使用
SELECT
`Feed`.`id`,
`Feed`.`name`,
(3959 * acos (cos (radians(40.7127837)) * cos(radians(FeedLocation.latitude)) * cos(radians(FeedLocation.longitude) - radians(-74.00594130000002)) + sin (radians(40.7127837)) * sin(radians(FeedLocation.latitude)))) AS `distance`,
(Select COUNT(id) FROM feed_locations WHERE feed_id = `Feed`.`id`) AS `location_count` FROM `feeds` AS `Feed`
LEFT JOIN `feed_locations` AS `FeedLocation` ON (`FeedLocation`.`feed_id` = `Feed`.`id`)
GROUP BY `Feed`.`id` HAVING distance < 10
ORDER BY `distance` ASC
このクエリ私は結果を与えます
私は現在の位置からのfeed_locationの最小距離が必要です。距離フィールドは私に最高値を与えますが、私はfeed_locationsテーブルから最低値を要求します。
私のクエリは機能していますが、それを発行してください:
1つのフィードが1m、2m、3m、4m、5m、10m、私はすべてのフィードが5メートルの距離を見つけたいと思っていますが、それはこのフィードが5メートル持っていることを私に示しています。私からの距離は1mの距離にする必要があります。
私はフィドルを作成しました。http://sqlfiddle.com/#!9/c408e6/5
テーブル1のフィドルによると、フィード1は現在の位置から4.02mですが、このフィードはテーブル2の2つの位置を持っています。私はそれぞれの位置距離を表示しています。今ポイントは0です結果、場所の一つは、私からゼロマイルの距離ですが、それは、私はあなたが見るこのクエリを働いフィドルで
任意の更新?よろしくお願いします。 –
明日更新します –