2016-04-04 85 views
1

我正在使用以下查詢獲取最近的地方。但如果我添加where條件無效的地方出現錯誤。如何添加在哪裏條件在php mysql查詢

SELECT 
    attName, 
    description, 
    rating, 
    COMMENT, 
    latitude, 
    langtitude, 
    openingTime, 
    closingTime, 
    (
     (
      ACOS(
       SIN(".$lat." * PI()/180) * SIN(latitude * PI()/180) + COS(".$lat." * PI()/180) * COS(latitude * PI()/180) * COS(
        (".$lang." - langtitude) * PI()/180 
       ) 
      ) * 180/PI() 
     ) * 60 * 1.1515 
    ) AS distance 
FROM 
    attraction 
HAVING 
    distance < 31 
ORDER BY 
    distance 

如果我添加where條件錯誤come.please幫助我如何添加上述查詢的條件。

+0

用子查詢包裝它,然後添加條件。我想你嘗試'在哪裏距離<...' – lad2025

+0

可能相關:http://stackoverflow.com/questions/3096301/sql-server-as-statement-aliased-column-within-where-statement這是SQL服務器,但主要想法是一樣的 – lad2025

+0

你能告訴我們什麼查詢確切導致一個問題?你給出了一個可行的查詢,並告訴我們,當你做某件事時,它不起作用,但我們不知道你做了什麼。 – klaar

回答

0

嘗試用WHERE條件更換您的HAVING條款:

SELECT attName, description, rating, 
       COMMENT , latitude, langtitude, openingTime, closingTime,(
       (
       ACOS(SIN( ".$lat." * PI() /180) * SIN(latitude * PI() /180) + COS( ".$lat." * PI() /180) * COS(latitude * PI() /180) * COS((
       ".$lang." - langtitude 
       ) * PI() /180)) *180/PI() 
       ) *60 * 1.1515 
       ) AS distance 
       FROM attraction 

       WHERE distance < 31 

       ORDER BY distance 

,然後添加addtional條件AND this = that

一個HAVING子句通常與GROUP BY一起使用 - 你沒有。

SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... 
+0

謝謝你的建議me.Now我正在使用組的工作。謝謝你 –

+0

如果它幫助你可能想接受/ upvote? :-) – Jan