2010-08-31 38 views
0

我有以下sql查詢當我執行它零行顯示我有feild稱爲距離與值null它,當我執行此查詢距離feild將填充一些數值,但如果我指定條件距離< 2或距離< 10或...顯示相同的結果我可以知道最新的問題。錯誤與SQL查詢中的where子句

SELECT Id,Name1,ZipCode,StreetName,StreetNumber,State1,Lat, 
    Lng,Keyword, 
    (6371 * ACOS(COS((12.925432/57.2958)) 
    * COS( (Lat/57.2958) ) * COS((Lng/57.2958) - (77.5940171/57.2958)) 
    + SIN(12.925432/57.2958) * SIN( Lat/57.2958 ))) AS distance 
    FROM Business_Details 
    where ( 
    (StreetName like '%jayanagar%') 
    and (Keyword like '%plumbing%') 
    and (distance<3) 
    ) 
    ORDER BY distance; 
+2

接受你以前的問題的一些答案,你將贏得聲譽! – fredley 2010-08-31 12:03:34

回答

0

這種特殊的查詢可以通過在sql中創建視圖來成功執行。 (COS((12.925432/57.2958))* COS((Lat/57.2958))* COS((())* (77.5940171/57.2958))+ SIN(12.925432/57.2958)* SIN(Lat/57.2958)))AS距離FROM Business_Details ORDER BY distance; 這個特定的視圖包含距離feild的結果,然後我們可以查詢視圖業務來操縱我們輸入的距離值的結果 select * from business where(distance < 2);

2

你得到的答案早...

[How to use" HAVING "and "ORDER BY" clause in sql

您不能引用場距離where子句中,你必須使用:

(6371 * ACOS(COS((12.925432/57.2958)) 
* COS( (Lat/57.2958) ) * COS((Lng/57.2958) - (77.5940171/57.2958)) 
+ SIN(12.925432/57.2958) * SIN( Lat/57.2958 ))) < 3 
+0

感謝您的回覆,我已經按照您的建議對我的查詢進行了更改,但結果爲空,我無法跟蹤到底問題出在哪裏,是他們處理此問題的替代方法。 – mahesh 2010-08-31 12:15:26