필자는 필자가 필요로하는 매우 복잡한 쿼리를 가지고있다. 그러나 필자는 누군가가 나를 도울 수 있기를 바란다.복잡한 오라클 쿼리
두 쿼리를 하나의 쿼리로 만들어야합니다. 테스트 목적으로
Name Postcode Lat Long
Taylor CB8 53.829517 -1.780320
이들은 단지 더미 값 :
select * from table1 t1
join table2 t2 on t2.outcode = t1.post_code
이 LAT
그래서 같은 우편 번호의 LONG
을 포함하는 결과를 생성합니다
내 첫 번째 쿼리는이입니다.
나의 다음 쿼리는 내가이 결과
Location_name Distance
NR Location 56.6
을 생산
CB8
으로
:postcode
을 대체 할 경우 포인트
의 LAT & 시간에 따른 거리를 계산하는 기능이
SELECT * FROM (
SELECT t3.location_name,
calc_distance(t3.lat, t3.lng, t2.lat,t2.lng) as distance
FROM table3 t3, table2 t2
where t2.outcode = :postcode
order by distance) i
where rownum = 1
calc_distance
입니다
어떻게 든해야 할 일은 다음과 같은 결과물을 단일 쿼리.
Name Postcode Lat Long Nearest_Loc Distance
Taylor CB8 53.829517 -1.780320 NR Location 56.6
가능하다면 내 생애에서 어떻게 이것을 만들어 낼 수 없습니까?
아무도 도와 줄 수 있습니까?
첫 번째 쿼리와 함께 왼쪽 결합을 시도하십시오. – Vishal
@Vishal 확장 할 수 있습니까? 왼쪽 조인을 시도했지만 왼쪽 조인을 볼 수 없습니까? –
제쳐두고, [Oracle Locator] (http://docs.oracle.com/html/B10826_01/sdo_locator.htm)가 사용자 정의 함수와 같은 이런 유형에 더 적합하다는 것을 알 수 있습니다. 그 밖의 것이 없다면, SDO_GEOMETRY 타입을 인덱싱 할 수 있습니다. 이렇게하면이 정렬에 대한 쿼리를 훨씬 빠르게 수행 할 수 있습니다. – Allan