2012-12-30 4 views
1

나는 완전한 초보자이며 과거의 게시물을보고 해결책을 찾지 못했습니다. 두 데이터베이스에서 병합 된로드 킬 데이터가 포함 된 지오 데이터베이스 (ESRI ArcMAP, 약 70,000 개의 레코드)가 있습니다.중복 쿼리 찾기

Ex.

Date_, Route, MilePost, Database 

10/1/2012, ML34, 113, Animal_Vehicle 

10/2/2012, ML34, 113.4, Carcasses 

10/2/2012, ML16, 86, Carcasses 

두 데이터베이스간에 중복 레코드를 정렬하려고합니다. 동일 MilePost, RouteDate_ 인 레코드는 이미 제거되었습니다. 문제는 다음과 같습니다. Animal_Vehicle은 언제든지 또는 요일에 충돌을 기록 할 수 있지만 Carcasses 데이터베이스의 기록은 정상 업무 시간 동안에 만 기록됩니다. 따라서 전날이나 주말에 시간이 지나면 Animal_Vehicle으로 기록 된 시체에서 중복이 발생합니다. 그 다음날 아침, 또는 월요일 (또는 공휴일 주말에는 화요일)에 기록이 복사됩니다 (Carcasse). 또 다른 문제는 Animal_Vehicle MilePosts은 가장 가까운 반 마일로 반올림되는 경향이있는 반면 Carcasses MilePosts은 더 정확합니다.

목표는 때 Database=Carcasses, 쿼리가 MilePost가 +/-를 Carcasses 기록의 0.4 Database=Animal_Vehicle, 레코드를 반환하도록, 두 Database 값 사이에 쌍 레코드를 반환하는 쿼리 또는 알고리즘을 구축하는 것입니다, 그리고 Date_Carcasses 레코드의 마지막 4 일 이내입니다. 예제 데이터의 처음 두 행을 반환합니다.

모든 응답을 크게 받으실 수 있습니다! 감사!

이 단지 공상이다
+0

http://code.google.com/p/google-refine/을 확인하십시오. 아마도 작업에 유용 할 것입니다. – AndreKR

+0

그건 재미있는 링크 감사합니다! – user1938198

답변

1

가입 :

select * 
from Carcasses c full outer join 
    Animal_Vehicle av 
    on c.date between av.date and av.date+3 and 
     abs(c.Milepost - av.Milepost) < 0.5 and 
     c.route = av.route 

on 절은 당신의 설명에 따라 조건을 가지고있다. 이것은 매우 빠른 쿼리 일 가능성이 없습니다. 그리고, 데이터베이스에 의존하는 "+3"을 사용하여 날짜를 추가 할 수있는 데이터베이스를 사용하고 있다고 가정합니다.

+0

응답 해 주셔서 감사합니다! 나는 이것을 실행하는 방법이 Python이고 SQL을 지원하지 않는 ArcMAP의 커맨드 라인을 통해 이루어져야한다는 것을 알고있다. 올바른 개념 인 것처럼 보이므로 파이썬으로 변환하는 방법을 알아 내야합니다. 다시 한 번 감사드립니다! – user1938198