2
我的SQL查詢工作正常,直到我嘗試添加一個「WHERE距離< 10」和「塊-的算AS距離」 4日和10日線分別。任何想法如何解決它?謝謝!問題與這個MySQL查詢:(使用WHERE與AS子句)
Unknown column 'distance' in 'where clause'
SELECT SQL_CALC_FOUND_ROWS places.*, category.*,
COUNT(places_reviews.place_id) AS num_reviews,
(places_popularity.rating_1 + 2*places_popularity.rating_2 + 3*places_popularity.rating_3 + 4*places_popularity.rating_4 + 5*places_popularity.rating_5)/(places_popularity.rating_1 + places_popularity.rating_2 + places_popularity.rating_3 + places_popularity.rating_4 + places_popularity.rating_5) AS average_rating,
6371 * acos(cos(radians(places.lat)) * cos(radians(1.29315)) * cos(radians(103.827164) - radians(places.lng)) + sin(radians(places.lat)) * sin(radians(1.29315))) AS distance
FROM (places)
JOIN category
ON places.category_id = category.category_id
LEFT JOIN places_reviews ON places_reviews.place_id = places.id
LEFT JOIN places_popularity ON places_popularity.place_id = places.id
WHERE `places`.`category_id` = 1 AND `distance` < 5 AND places.name LIKE '%%' GROUP
BY places.id
ORDER BY id desc
LIMIT 5
公式是很長的,有沒有什麼辦法來縮短它像使用AS子句? – Nyxynyx 2011-05-18 23:48:48
@Nyxynyx - 我剛剛更新了我的文章,以反映如何做到這一點。但請注意,您將需要評估查詢執行計劃以找出每種方法的性能優勢/缺點。 – IAmTimCorey 2011-05-18 23:53:31
你是否知道在WHERE子句中包含公式會導致公式計算任何東西?只是想知道 – Nyxynyx 2011-05-18 23:53:58