2016-03-21 59 views
2

我有2個表如何獲得最小半徑位置

 
1. feeds => id,name 
2. feed_locations => id, feed_id, latitude,longitude,location_name 

的飼料有多個位置。
現在我想通過飼料從用戶當前位置附近搜索
我需要用戶的經緯度,所以我從谷歌位置和半徑取
現在我用這個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_locations與用戶當前位置的最小距離。距離字段給我最高的價值,但我需要從feed_locations表中最低的價值。


我的查詢正在工作,但問題是:

就好像一個飼料有10個位置像1米,2米,3米,4米,5米,10米,100米的距離。我想找到5米距離的所有飼料然後它的作品,但它表明,這種飼料有5米。距離我的距離,但結果應該是1米的距離。
我創建了一個小提琴請http://sqlfiddle.com/#!9/c408e6/5
根據表1的結果搗鼓來了那FEED1是從我的當前位置4.02米但這種飼料在表2 2的位置,我有顯示每個位置的距離。所以FEED1的位置之一是零英里的距離,但我把它給結果FEED1是4.02英里

+0

有沒有更新?問候 –

+0

我會明天更新 –

回答

0
SELECT 
a.id, 
a.name, 
a.distance, 
a.location_count 
FROM 
    (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`) 
    ORDER BY `distance` ASC) AS a 
    GROUP BY a.id HAVING distance < 10; 

在我計算出這個查詢,你看到了小提琴和它的作品,現在的結果是0的一點是,如果你分組一個沒有排序的記錄集,然後你點了......你什麼也沒有點。您必須訂購,然後對有序集合進行分組。

希望它適合你。

Regards

+0

我的查詢正在工作,但它的問題: 就像一個飼料有10個位置像1米,2米,3米,4米,5米,10米,100米的距離。我想找到5米距離的所有飼料然後它的作品,但它表明,這種飼料有5米。距離我的距離,但結果應該是1米的距離。 –

+0

外觀更新。我無法重現你的行爲! –

+0

我在這個網址下創建了小提琴PLZ檢查http://sqlfiddle.com/#!9/c408e6/5 –