2014-01-09 2 views
0

로드 지점과 배달 지점 사이의 반지름을 계산 중입니다.mysql 쿼리에 알 수없는 열 오류가 발생했습니다.

내가 그것을하지만 나에게주는 오류에 대한 쿼리를 만들었습니다 :

알 수없는 열 Distance1 (거리 1) 여기

쿼리입니다 : 쿼리 아래

SELECT ((Acos(Sin('49.4634' * Pi()/180) * Sin(
       `locationlatitudestart` * Pi()/180) 
         + 
          Cos(
          '49.4634' * Pi()/180) * Cos(
          `locationlatitudestart` * Pi() 
         /
          180) * Cos((
           '3.54404' - `locationlongitudestart`) * Pi()/
             180)) * 
        180/Pi()) * 60 * 1.1515) AS distance1, 
     ((Acos(Sin('48.8637' * Pi()/180) * Sin(
       `locationlatitudeend` * Pi()/180) + 
        Cos 
        (
        '48.8637' * Pi()/180) * Cos(
        `locationlatitudeend` * Pi()/180) * 
        Cos 
        ((
         '2.36109' - `locationlongitudeend`) * Pi()/180)) * 
      180/Pi 
      () 
     ) * 60 * 1.1515)      AS distance2, 
     ((Acos(Sin('49.4634' * Pi()/180) * Sin(
       `locationlatitudeend` * Pi()/180) + 
        Cos 
        (
        '49.4634' * Pi()/180) * Cos(
        `locationlatitudeend` * Pi()/180) * 
        Cos 
        ((
         '3.54404' - `locationlongitudeend`) * Pi()/180)) * 
      180/Pi 
      () 
     ) * 60 * 1.1515)      AS distance3, 
     ((Acos(Sin('48.8637' * Pi()/180) * Sin(
       `locationlatitudestart` * Pi()/180) 
       + 
        Cos(
        '48.8637' * Pi()/180) * Cos(`locationlatitudestart` * Pi() 
               /180) 
        * 
        Cos((
         '2.36109' - `locationlongitudestart`) * Pi()/180)) * 
      180/
      Pi 
      ()) * 60 * 1.1515)    AS distance4 
FROM instant_quotes 
WHERE distance1 <= locationradiusstart 
     AND distance2 <= locationradiusend 
     OR distance3 <= locationradiusend 
      AND distance3 <= locationradiusstart 
+0

내 코드 들여 쓰기 주셔서 감사합니다. –

+1

당신 ca 이런 식으로 WHERE와 함께 열 별칭을 사용하지 마십시오. HAVING 또는 하위 쿼리를 사용하거나 첫 번째 비트를 다시 인용하거나 거리를 계산하는 함수를 만드는 것이 좋습니다. – Strawberry

+1

쿼리 전에 계산을 수행하지 않는 이유는 무엇입니까? 또는 저장 프로 시저를 사용합니까? – yoavmatchulsky

답변

1

사용 - 오히려 절을 필요없이 사용할 수 있도록 ~보다

SELECT ((ACOS(SIN('49.4634' * PI() /180) * SIN(`LocationLatitudeStart` * PI() /180) + COS('49.4634' * PI() /180) * COS(`LocationLatitudeStart` * PI() /180) * COS(('3.54404' - `LocationLongitudeStart`) * PI() /180)) *180/PI()) *60 * 1.1515) AS distance1 , 
    ((ACOS(SIN('48.8637' * PI() /180) * SIN(`LocationLatitudeEnd` * PI() /180) + COS('48.8637' * PI() /180) * COS(`LocationLatitudeEnd` * PI() /180) * COS(('2.36109' - `LocationLongitudeEnd`) * PI() /180)) *180/PI()) *60 * 1.1515) AS distance2, 
    ((ACOS(SIN('49.4634' * PI() /180) * SIN(`LocationLatitudeEnd` * PI() /180) + COS('49.4634' * PI() /180) * COS(`LocationLatitudeEnd` * PI() /180) * COS(('3.54404' - `LocationLongitudeEnd`) * PI() /180)) *180/PI()) *60 * 1.1515) AS distance3 , 
    ((ACOS(SIN('48.8637' * PI() /180) * SIN(`LocationLatitudeStart` * PI() /180) + COS('48.8637' * PI() /180) * COS(`LocationLatitudeStart` * PI() /180) * COS(('2.36109' - `LocationLongitudeStart`) * PI() /180)) *180/PI()) *60 * 1.1515) AS distance4 
    FROM instant_quotes having distance1 <= LocationRadiusStart AND distance2 <= LocationRadiusEnd OR distance3 <= LocationRadiusEnd AND distance3 <= LocationRadiusStart 
+0

글쎄 지금 알려지지 않은 컬럼 LocationRadiusStart 'in having 절'이 있습니다. –

+0

아 맞습니다. 고마워 친구. 그 누구도 아프지 않으려 고 애썼다 –

+0

upvote에 감사의 뜻을 전한다. – Abhishek

관련 문제