2017-05-10 1 views
0

PHP 및 MS SQL Server OBDC Connect에서 작업합니다. 근거리 검색을 사용하지만 오류가 발생합니다.별칭이지만 MS SQL Server 및 잘못된 열 이름

DATABASE QUERY ERROR [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'distance'. 

거리가 별칭입니까? 왜 오류가 발생합니까? 그것 없이는 잘 작동합니다.

$sql_nearme = "SELECT place.place_logo, place.place_rank, place.percent_points, place.points, place.place_id, place.place_adress, place.place_description, place.place_photo, place.place_name,(6371 * acos(cos(radians(".$map['results'][0]['geometry']['location']['lat'].")) * cos(
         radians(place.place_lat) 
       ) * cos(
         radians(place.place_long) - radians(".$map['results'][0]['geometry']['location']['lng'].") 
       ) + sin(
         radians(".$map['results'][0]['geometry']['location']['lat'].") 
       ) * sin(
         radians(place.place_lat) 
       ) 
      ) 
     ) AS distance 
    FROM place WHERE distance < 100 ORDER BY distance ASC OFFSET ".$blatt_start." ROWS FETCH NEXT ".$blatt_end." ROWS ONLY"; 
+0

당신은 당신이 WHERE 절 –

+0

내가 MSSQL의 별명 HAVING 사용할 수 있습니다에 별칭을 사용할 수 있습니까? – Burhan

+0

http://stackoverflow.com/a/14049515/575376 –

답변

0

where 절에는 별칭을 사용할 수 없습니다. where 절에서 case 문을 사용하거나 where 절이없는 하위 쿼리로 쿼리를 바꿀 수 있습니다.이 경우 별칭은 where 절에서 확인할 수있는 열 이름입니다.

0
당신은 하위 쿼리에 넣어 또는 아래 절 곳의 전체 상태를 사용할 필요가

:

$sql_nearme = "SELECT * FROM (SELECT place.place_logo, place.place_rank, place.percent_points, place.points, place.place_id, place.place_adress, place.place_description, place.place_photo, place.place_name,(6371 * acos(cos(radians(".$map['results'][0]['geometry']['location']['lat'].")) * cos(
         radians(place.place_lat) 
       ) * cos(
         radians(place.place_long) - radians(".$map['results'][0]['geometry']['location']['lng'].") 
       ) + sin(
         radians(".$map['results'][0]['geometry']['location']['lat'].") 
       ) * sin(
         radians(place.place_lat) 
       ) 
      ) 
     ) AS distance 
    FROM place) A WHERE A.distance < 100 ORDER BY A.distance ASC OFFSET ".$blatt_start." ROWS FETCH NEXT ".$blatt_end." ROWS ONLY";