2013-03-28 6 views
-2

I 지리적 거리를 계산하기 위해 다음과 같은 쿼리가 : 나는 쿼리를 실행하면MySQL은 수학 연산을 인식하지 못합니다

SELECT (
    (ACOS(SIN(39 * PI()/180) * 
     SIN(`latitude` * PI()/180) + 
     COS(39 * PI()/180) * 
     COS(`latitude` * PI()/180) * 
     COS((32–`poi.longitude`) * PI()/180) 
     ) * 180/PI() 
    ) * 60 * 1.1515 
     ) AS distance 
FROM  `poi` 
HAVING distance <= 10 
ORDER BY distance ASC 

내가 오류가 : 나는 대체한다면

Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '– poi.longitude) * PI()/180...

을 (32 - poi.longitude)와 같은 숫자로 다음 (3) 작동하지만, 비록 수학 연산으로 (32-21) 사용하더라도 오류가 throw됩니다. 나는 poi.longitudelongitude (따옴표 포함), 경도 등으로 대체하지만 아무 것도 작동하지 않는 것 같습니다. 어떤 아이디어?

+0

왜 투표가 종료 되었습니까? – ufucuk

답변

1

해야한다 -.

+0

당신은 최고입니다, 고마워요! – ufucuk

3

구문 오류의 이유는 서버에서 알 수없는 열을 찾는 원인으로 백틱으로 테이블 이름과 열 이름을 래핑했기 때문입니다.

`poi.longitude` -- searches for column name [poi.longitude] and not 
       -- [longitude] from table [poi] 

그것은 당신이 적절한 마이너스 기호를 사용하지 않는

`poi`.`longitude` 

또는

poi.longitude 
+0

나는 모든 조합을 시도했지만 아무 것도 작동하지 않는다. mysql 버전을 업데이트했다. 도움이되지 않았다. – ufucuk

+0

"아무것도 작동하지 않는다"는 것은 MySQL 오류 메시지가 아니다. –

+0

@ufucuk 오류 메시지에서 읽는 오류는'- \'poi.longitude \'' –

관련 문제