2012-10-16 6 views
0

SQLite 데이터베이스에 정보를 출력하도록 업데이트되었거나 패치 된 끔찍한 기존 도구가 있습니다. 아무도 시스템의 백엔드를 만져보고 싶어하지 않으며, 나는 그 문제를 파헤 치기에 충분하지 않습니다. 제 문제는 아닙니다. 그러나 여기에 내 문제가있다 :여러 테이블 비교

SQLite 데이터베이스에 테이블이 여러 개있다. 각 테이블은 하루를 나타내며 다음과 같이 나열된 모든 버스 운행을 포함합니다.

| Direction | Time | RunNumber | StopIndex | 
---------------------------------------------- 
| In  | 6:30 |  1  |  1  | 
| In  | 6:35 |  1  |  2  | 
| In  | 6:40 |  1  |  3  | 
| In  | 6:45 |  1  |  4  | 
| In  | 7:30 |  2  |  1  | 
| In  | 7:35 |  2  |  2  | 
| In  | 7:40 |  2  |  3  | 
| In  | 7:45 |  2  |  4  | 
| Out | 6:40 |  1  |  1  | 
| Out | 6:45 |  1  |  2  | 
| Out | 6:50 |  1  |  3  | 
| Out | 6:55 |  1  |  4  | 

일부 날은 다른 것보다 더 많은 달리기가있을 수 있습니다. 정지 수는 모든 테이블에서 동일합니다.

동일한 정의는 방향과 시간이 동일하다는 것입니다. 각 실행은 세트로 취급됩니다. 정지 시간 중 하나가 다른 경우 전체 실행을 테이블로 병합해야합니다.

내 질문은 :

은 무엇 주어진 모든 테이블에 존재하지 않는 값을 포함하는 다른 테이블을 생성하는 테이블의리스트로부터, 가장 쉬운 방법이 될 것입니다? 이 작업은 SQLite 측 또는 C# .NET 4.0에서 수행 할 수 있습니다.

현실적으로 나는 달리는 번호를 알아야하기 때문에 나중에 쉽게 추출하여 Excel 스프레드 시트에 넣을 수 있습니다.

답변

0

EXCEPT를 사용해보십시오. 예를 들어, 다음 쿼리는 Table1에 존재하지만 Table2에는 존재하지 않는 모든 행을 나열합니다.

SELECT Direction, Time, RunNumber, StopIndex 
FROM Table1 
EXCEPT 
SELECT Direction, Time, RunNumber, StopIndex 
FROM Table2 
+0

덜 선택적 기준에서이를 수행 할 수있는 방법이 있습니까? 내 문제는 테이블의 어느 위치에서든지 다른 여행이 삽입되어 RunNumber가 모든 후속 여행에서 n + 1이되는 것입니다. 이 메소드를 사용하면 RunNumber가 n + 1이므로 추가 후 모든 행이 반환됩니다 (또는 많은 실행이 삽입되었지만). – HeWhoWas