簡體   English   中英

MySQL計數地理查詢

[英]mysql count geo query

嗨,我很難計數查詢:

SELECT COUNT( * ) AS  `total`,
        ( 3959 * ACOS( COS( RADIANS( 45.77447 ) ) 
               * COS( RADIANS( c.latitude ) ) 
               * COS( RADIANS( c.longitude ) - RADIANS( 4.82785 ) ) 
               + SIN( RADIANS( 45.77447 ) ) 
               * SIN( RADIANS( c.latitude ) ) ) ) AS distance, `r` . * 
FROM  `adverts` AS  `a` 
INNER JOIN  `users` AS  `u` ON a.user_id = u.user_id
INNER JOIN  `location_city` AS  `c` ON a.location_id = c.city_id
INNER JOIN  `location_region` AS  `r` ON c.region_id = r.region_id
HAVING (distance <50)
LIMIT 1

這將返回表中的廣告總數,而不是查詢總數。

任何幫助將非常感激。

如果您想要滿足distance<50的廣告數量,其中distance是一個計算字段,則必須執行子查詢:

SELECT COUNT(*) as total FROM
(SELECT .. AS distance
 ...
 WHERE distance < 50)

(順便說一句,我認為沒有GROUP BY進行HAVING操作不是有效的MySQL(但是我可能錯了)。

由於我似乎無法在帖子中添加評論(仍不確定如何)

您可以嘗試添加一個

group by a.id

LIMIT之前

..但是,請仔細閱讀您的帖子,您是否在嘗試將其他數字(例如用戶,位置和城市)納入計數? 如果是這樣,您可能需要進行子查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM