2013-02-22 1 views
0

나는 최근에이 질문을 게시 :. getting distance between two points using google gps api with phpSQL 쿼리는을 SELECT *

을 나는 때문에 내가 년후이 사이트 내 저/새로운 상태에 나는 그 사람의 반응에 대한 몇 가지 질문을했고 그러나 굉장했다 회신을 받았습니다 다시 논평 할 수 없습니다. 내 질문에 대한 응답으로 다른 사용자는 내가이 쿼리에 대한 몇 가지 질문을했다이 쿼리를 **

SELECT a.*, 3956 * 2 * ASIN(SQRT(POWER(SIN(($lat - lat) * pi()/180/2), 2) + COS($lat * pi()/180) * COS(lat * pi()/180) * 
POWER(SIN(($long - longi) * pi()/180/2), 2))) as distance 
FROM table 
GROUP BY id HAVING distance <= 500 
ORDER by distance ASC** 

을 게시 누군가가 도움이 될 기대했다.

1. a. *가 무엇입니까? 나는 슈퍼 고급 SQL에서 있지만 꽤 효율적이 같은 것을 본 적이 없어. 그것은 테이블에 arbritrary 필드 또는 실제 필드를 나타내는 것으로 알려졌다면 모르겠다

2.Since 내가 PHP 에서이 일을 해요 쿼리는 다음이 쿼리 구문을 약간 다른 따옴표로 이동합니다 . 누군가가 쿼리가 따옴표 안에 어떻게 생겼는지 알았는지 궁금합니다.

3.이 쿼리에는 "GROUP BY id"도 있습니다. 내 테이블에서 쿼리하는 ID 필드가 있습니다. 이 "id"가 내 테이블의 ID 필드와 연결되어 있습니까?

도움이 될 것입니다.

+1

를 사용할 수 있습니다. 'a'는 어디에서나 별칭으로 지정되지 않습니다. – Makoto

+0

당신의 테이블 설명을 공유하시기 바랍니다, 당신의 SQL 호기심이 – Reinstar

+0

어떻게'FROM table' 할 수 있습니까, 테이블은 SQL에서 키워드입니까? –

답변

0

귀하의 검색어는 다음과 같아야합니다. - a은 (는) 여기 테이블 별칭입니다.

SELECT a.*, 3956 * 2 * ASIN(SQRT(POWER(SIN(($lat - lat) * pi()/180/2), 2) + COS($lat * pi()/180) * COS(lat * pi()/180) * 
POWER(SIN(($long - longi) * pi()/180/2), 2))) as distance 
FROM table AS a 
GROUP BY id HAVING distance <= 500 
ORDER by distance ASC 

또는 당신은 좋은 질문을의 간단한

SELECT *, 3956 * 2 * ASIN(SQRT(POWER(SIN(($lat - lat) * pi()/180/2), 2) + COS($lat * pi()/180) * COS(lat * pi()/180) * 
POWER(SIN(($long - longi) * pi()/180/2), 2))) as distance 
FROM table 
GROUP BY id HAVING distance <= 500 
ORDER by distance ASC 
+0

감사합니다. Roopendra! –

+0

그래서 이것을 연결 한 후, 명확히하기 위해 $ long과 $ lat는 비교할 변수이고 lat와 longi는 내 테이블의 해당 필드 값입니다. 내 경우에는 위도와 경도가 위도와 경도가되므로 위도와 경도는 위도와 경도가됩니다. 또한 내가 id 필드라는 userID를 가지고 있기 때문에, id는 내 userID 필드가 될 것입니까? –

+0

수정하십시오. id는 userID로 바뀌고 lat와 long은 위도와 경도가됩니다. – Roopendra