2013-05-10 2 views
-2

으로 나는 SQL의 DB를하고 난 DB를 조회하려면이 옵션을 사용자바 스크립트/jQuery를 쿼리 MySQL의

SELECT ID, (3959 * ACOS (COS (라디안 (37)) * COS (라디안 (위도 )) * cos 거리 (라디안 (경도) - 라디안 (-122)) + sin (라디안 (37)) * sin (라디안 (위도)))) AS 거리 거리 HAVING 거리 < 12925 ORDER BY distance LIMIT 0, 20;

변수는 -122가 나는 SQL의 DB로이 데이터를

좌표, 37 일, 그러나 나는 자바 스크립트 배열로 DB를 수출 나는 정렬 포함하는 새로운 배열을 얻으려면 결과는 mySQL과 관련이있는 쿼리를 기반으로 한 것이지만 이번에는 JavaScript 또는 jQuery 만 사용하고 싶습니다.

나는 이것을 할 방법이 있습니까?

편집 - JavaScript로 복잡한 쿼리를 기반으로 배열을 변경할 수있는 방법이 있습니까?

+0

'나는 자바 스크립트 배열로 db를 내보냈습니다. '.. 당신은 확실합니다 ... 왜냐하면 javascirpt는 클라이언트 측이고 SQL은 서버에 있습니다 ... – bipen

+0

그래서, 당신은 자바 스크립트 배열로 테이블 데이터를 가지고 있습니다. 다시 말해? 그리고 자바 쿼리를 사용하여 동일한 결과를 얻으려면 자바 스크립트를 사용하고 싶습니까? 아직 아무 것도 시도하지 않았습니까? – Yatrix

+0

@bipen 예, json_encode를 사용했습니다. –

답변

1

나는 (SQL과 같은 방식으로) 자동적으로이 작업을 수행 할 수있는 방법을 알고하지 않습니다,하지만 당신은 (코드에 주석 참조) 다음과 같은 무언가를 시도 할 수 :

라이브 예를 here.

/* Declare utility function to convert degrees to radians */ 
function radians(deg) { 
    return deg * Math.PI/180; 
} 

/* Declare utility function to compute distance from (37, -122) */ 
/* (If these values change dynamically they should */ 
/* be given as parameters to the function.) */ 
var cos37 = Math.cos(radians(37)); 
var sin37 = Math.sin(radians(37)); 
function distance(lat, long) { 
    var dist = 3959 
       * Math.acos(cos37 
           * Math.cos(radians(lat)) 
           * Math.cos(radians(long) 
              - radians(-122)) 
          + sin37 
           * Math.sin(radians(lat))); 
    return dist; 
} 

/* Somehow populate a 2-dimensional array containing all entries. */ 
/* Each row should look like this: [id, latitude, longtitude] */ 
var allArr = ...;  // [[id1, lattitude1, longtitude1],[id2, lattitude2, longtitude2],...] 

/* Populate a new array containing [id, distance] of those entries */ 
/* whose distance from (37, -122) is less than 12925. */ 
var newArr = []; 
for (var i = 0; i < allArr.length; i++) {  
    var dist = distance(allArr[i][1]/*latitude*/, 
         allArr[i][2]/*longtitude*/); 
    if (dist < 12925) { 
     newArr.push([allArr[i][0]/*id*/, 
        dist]); 
    } 
} 

은 또한 당신이 어떤 extraterestrial 웹 응용 프로그램을 디자인하지 않는 그래서, 당신은 당신의 사양 :

을 개정 할 수 있습니다, 12,925마일보다 큰 거리로 지구에 두 장소를 찾는 것은 불가능하다 것으로 나타났습니다
+0

노력에 감사드립니다, 당신은 천재입니다! :디 –